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的更新机制)

  • 相关阅读:
    socket 编程练习--UDP聊天程序
    练习 多线程
    练习二:求最大公约数
    练习一:单链表的反转,串的模式匹配
    【算法1】string 的全排列
    lw资料
    SDmenu滑动菜单获取导航连接部分代码
    FileOperate(个人资料)
    C/C++基本数据类型
    C++/MFC计算程序运行时间
  • 原文地址:https://www.cnblogs.com/hjj2ldq/p/13025579.html
Copyright © 2011-2022 走看看