我更喜欢浏览器而不是webpack,但是浏览器化环境中存在一个我无法解决的问题。我正在使用 react、redux 和 react-route,我愿意像 react-hot-loader 为 webpack 环境提供的那样让热模块重新加载。我正在使用livereactload来实现这一点(也尝试过browserify-hmr),问题是它不适用于redux。它的 redux 示例 (https://github.com/milankinen/livereactload/blob/master/examples/02-redux) 不适用于新克隆。可能吗?有人可以给我应用于示例以使其工作所需的更改吗?
附言看看这个问题 https://github.com/milankinen/livereactload/issues/64
我正在使用它,但作为一个监视插件:plugin(require('livereactload')),它工作正常。
我确实有 LiveReactload :: 捆绑包已更改,页面已更新,但也有此警告:browser.js:51 警告:[反应路由器] 您无法更改; 它将被忽略。
它仍然会进行"本地"重新加载,但它不是"真正的"热重载,因为很多东西仍然被重新渲染并且没有达到我想要的那么多。
我们唯一需要添加的配置存储是以下内容:
export default function configureStore(initialState) {
const store = createStoreWithMiddleware(rootReducer, initialState);
// React hot reload
if (module.onReload) {
module.onReload(() => {
const nextReducer = require('../reducers');
store.replaceReducer(nextReducer.default || nextReducer);
// return true to indicate that this module is accepted and
// there is no need to reload its parent modules
return true;
});
}
return store;
}
我对redux
的问题是我没有使用react-proxy@1.x
也没有使用babel-plugin-react-transform
所以我的组件没有包装在代理中。新版本的livereactload将在没有react-proxy
的情况下使用它,或者babel-plugin-react-transform
看看这个:https://github.com/milankinen/livereactload/issues/64#issuecomment-231992217
我对react-route
的问题是我在 Route 指令中使用了定义为箭头函数的组件。显然livereactload
不支持这一点。它是通过使用类组件而不是箭头函数来解决的。此处解释:https://github.com/milankinen/livereactload/issues/43#issuecomment-231990841