首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应组件在热模块重新发布后不从Redux状态进行更新

响应组件在热模块重新发布后不从Redux状态进行更新
EN

Stack Overflow用户
提问于 2017-05-02 09:16:11
回答 1查看 1.1K关注 0票数 1

我使用的反应-热装载机3.0.0-beta.6热重装反应组件。重新加载本身工作良好-我看到更新的组件立即。不幸的是,在成功重新加载之后,应用程序内部的调度操作不再触发重发器,我需要进行完全的手动刷新才能使应用程序再次工作。分派的操作将更新redux存储,但组件不会被重命名。

我使用的所有组件都由一个连接的容器和一个无状态组件组成。不呈现更新状态的原因是什么?如何继续调试?

MyComponent/cuer.js:

代码语言:javascript
运行
复制
const mapStateToProps = state => ({
    ...
});

const mapDispatchToProps = dispatch =>
  bindActionCreators({
    ...
  }, dispatch);

export default connect(mapStateToProps, mapDispatchToProps)(Component);

MyComponent/component.jsx:

代码语言:javascript
运行
复制
const Component = ({ testProp1, testProp2 }) => (
  <div onClick={testProp2}>
    {testProp1}
  </div>
);

以下是成功的更新:

代码语言:javascript
运行
复制
[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中呈现:

代码语言:javascript
运行
复制
const render = () => {
  ReactDOM.render(
    <AppContainer>
      <Provider store={store}>
        <MuiThemeProvider>
          <App />
        </MuiThemeProvider>
      </Provider>
    </AppContainer>,
        eyeTalLayer
    );
};

render();

if (module.hot) {
  module.hot.accept('./modules/App', render);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-02 17:07:10

实际上,React-Redux回购中有几个未解决的问题,讨论与Reacti-Redux5.0类似的行为。见反应-redux#636反应-redux#670

我做了一些研究,看起来层次结构中较高的组件正在重新编译和重新加载,而不是层次结构中较低的组件。因为v5实现了自顶向下的订阅系统,所以较低的组件不知道它们的订阅引用现在已经过时了。我还没来得及想办法解决这个问题。

基于我所看到的,我相信消除的使用会解决这个问题。您可以使用“普通”HMR重新加载整个组件树,我看到您已经设置了相应的代码。您将失去试图维护组件状态的RHL的潜在好处,但是Redux连接应该正确地重置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43734224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档