<WrappedComponent {...propsJS} /> immutable本来为了高效,但是这里也不完全克隆了 ?效率一样了?
来源:5-8 常用库集成:Immutable.js(2)

一天宏图
2020-09-22
<WrappedComponent {…propsJS} /> immutable本来为了高效,但是这里也不完全克隆了 ?效率一样了?
3回答
-
一天宏图
提问者
2020-09-24
我理解到 :只有reducer中 没有对state进行改变时 从而使用immutable可以不用{....state} 这样 提高效率了 ,而此时对应的容器组件的页面也不用渲染了 <WrappedComponent {…propsJS} /> 也就不执行了 这样才高效 但实际情况是 state不改变的场景不多
00 -
一天宏图
提问者
2020-09-24
老师,还是不太明白 我的理解: 1. 因为项目 reducer 绝大多数都会改变state,这样页面总是要渲染的 使用immutable时可以不用{....state,......} 从而提高效率, 但是因为总归要渲染页面 就必定要执行<WrappedComponent {...propsJS}/> {....propsJ}是克隆 效率较低 前面高后面低 抵消了
而且还有一个问题:使用了immutable后每次都要 使用高阶组件 <WrappedComponent {...propsJS}/>进行二次转换 entries reduce toJS()这些都需耗费时间
这样来看,使用immutable 在state改变导致页面渲染的场景中 岂不是效率更低了?
00 -
艾特老干部
2020-09-24
你好。在Redux 和 container组件连接时(connect),使用 immutable的数据类型,mapStateToProps执行时可以直接比较对象引用就能判断该组件使用的state是否改变,进而决定当前组件是否需要重新render。WrappedComponent这个高阶组件是在这个比较之后,当组件确实需要重新渲染才会执行的代码,因此不存在你说的效率问题。
00
相似问题