使Redux减速器和其他非组件可热加载

时间:2015-12-12 18:58:21

标签: javascript reactjs webpack flux redux

我很难让减速器变热。

我正在使用Webpack和react-transform-hmr。有了这个,当我保存时,所有的CSS和组件都是热加载的,但是当我尝试使用其他类型的类型时 - 最明显的是减速器 - 它会告诉我进行全面刷新。

我发现这是因为我需要明确地重新加载reducers并接受事件。我在store.js

中使用此代码
if(module.hot) {
  module.hot.accept('./reducers/', () => {
    const nextRootReducer = require('./reducers/index');
    store.replaceReducer(nextRootReducer);
  });
}

reducers/index导出根减速器。

但是现在当我运行它时,它仍会告诉我[HMR] Cannot check for update (Full reload needed以及错误[HMR] TypeError: currentReducer is not a function

所以 - 我需要一些帮助才能让它发挥作用。代码可在https://github.com/wesbos/Simple-Redux获得,您可以通过执行以下操作重现该代码:

  1. npm install
  2. npm start
  3. 在浏览器中打开localhost:3000
  4. 编辑缩减器 - 打开posts.js并将第6行的数字更改为其他任何内容

1 个答案:

答案 0 :(得分:18)

我没有密切关注,但我最好的猜测是this issue Babel 6不再尝试使ES6默认导出module.exports的结果。

所以而不是

const nextRootReducer = require('./reducers/index');
你可能想要

const nextRootReducer = require('./reducers/index').default;

与Bab6 6输出匹配,用于ES6默认导出。