我使用的反应-热装载机3.0.0-beta.6热重装反应组件。重新加载本身工作良好-我看到更新的组件立即。不幸的是,在成功重新加载之后,应用程序内部的调度操作不再触发重发器,我需要进行完全的手动刷新才能使应用程序再次工作。分派的操作将更新redux存储,但组件不会被重命名。
我使用的所有组件都由一个连接的容器和一个无状态组件组成。不呈现更新状态的原因是什么?如何继续调试?
MyComponent/cuer.js:
const mapStateToProps = state => ({
...
});
const mapDispatchToProps = dispatch =>
bindActionCreators({
...
}, dispatch);
export default connect(mapStateToProps, mapDispatchToProps)(Component);MyComponent/component.jsx:
const Component = ({ testProp1, testProp2 }) => (
<div onClick={testProp2}>
{testProp1}
</div>
);以下是成功的更新:
[WDS] App updated. Recompiling...
[WDS] App hot update...
[HMR] Checking for updates on the server...
[HMR] Updated modules:
[HMR] - ./source/modules/DropDown/index.js
...
[HMR] - ./source/modules/App/index.js在main.jsx中呈现:
const render = () => {
ReactDOM.render(
<AppContainer>
<Provider store={store}>
<MuiThemeProvider>
<App />
</MuiThemeProvider>
</Provider>
</AppContainer>,
eyeTalLayer
);
};
render();
if (module.hot) {
module.hot.accept('./modules/App', render);
}发布于 2017-05-02 17:07:10
实际上,React-Redux回购中有几个未解决的问题,讨论与Reacti-Redux5.0类似的行为。见反应-redux#636和反应-redux#670。
我做了一些研究,看起来层次结构中较高的组件正在重新编译和重新加载,而不是层次结构中较低的组件。因为v5实现了自顶向下的订阅系统,所以较低的组件不知道它们的订阅引用现在已经过时了。我还没来得及想办法解决这个问题。
基于我所看到的,我相信消除的使用会解决这个问题。您可以使用“普通”HMR重新加载整个组件树,我看到您已经设置了相应的代码。您将失去试图维护组件状态的RHL的潜在好处,但是Redux连接应该正确地重置。
https://stackoverflow.com/questions/43734224
复制相似问题