zoukankan      html  css  js  c++  java
  • rematch的状态对象应该挂在页面上而不是APP根组件上

    1. 在项目中应该每个页面维持一个store,而不是所有页面的store全都放在APP层,如下:

        <Provider store={store}>
            <App {...this.props} />
        </Provider>
    
    原因:在app中可能会采取模块预加载功能,或者缓存整个模块的历史数据。
        如果单页的数据存放在App层,可能会导致页面数据彼此影响串乱,
        如果没有重置数据,从新进该页面时,可能会残留上次该页面展现时候的数据
        如果是willUnmout的时候重置页面数据,也会有问题。
        如果路由堆栈中存在了相同页面,即当前页面B的上上个页面是B,
        当前页面B返回的时候清除了数据,在回到上上个页面B时,
        页面数据被清除掉了,没有内容展示。因为两个页面共用的是同一份数据。
    
    如果是公共组件,可以把状态对象挂载在App层,但仍旧要注意重置状态,以免影响下次的调用。
    建议还是通过useState让函数组件自己维护状态最好,外部父组件或页面可通过传递props来处理数据交互。这样就不用顾及数据重置。
    

    2. 采用了memo包裹的组件,要更改rematch管理的状态数据的时候,要注意深拷贝断开关联,不然组件不会及时更新(参考memo的更新机制)

  • 相关阅读:
    Making your first driver
    注册表与盘符(转victor888文章 )
    电脑Win7如何取得文件管理所有权(提供各种GHOST版本的Windows)
    可拖动的DIV
    IE Javascript 进阶调试
    优化性能
    命令模式
    MVC 4 结合jquery.uploadify 上传实例
    IIS处理并发请求时出现的问题及解决
    Spring3.2 + Hibernate4.2
  • 原文地址:https://www.cnblogs.com/hjj2ldq/p/13025579.html
Copyright © 2011-2022 走看看