<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不改变的场景不多

0
0

一天宏图

提问者

2020-09-24

老师,还是不太明白   我的理解: 1. 因为项目 reducer 绝大多数都会改变state,这样页面总是要渲染的 使用immutable时可以不用{....state,......} 从而提高效率, 但是因为总归要渲染页面  就必定要执行<WrappedComponent {...propsJS}/>    {....propsJ}是克隆 效率较低    前面高后面低  抵消了


而且还有一个问题:使用了immutable后每次都要 使用高阶组件 <WrappedComponent {...propsJS}/>进行二次转换    entries reduce toJS()这些都需耗费时间


这样来看,使用immutable  在state改变导致页面渲染的场景中 岂不是效率更低了?


0
0

艾特老干部

2020-09-24

你好。在Redux 和 container组件连接时(connect),使用 immutable的数据类型,mapStateToProps执行时可以直接比较对象引用就能判断该组件使用的state是否改变,进而决定当前组件是否需要重新render。WrappedComponent这个高阶组件是在这个比较之后,当组件确实需要重新渲染才会执行的代码,因此不存在你说的效率问题。




0
0

React16+Redux实战企业级大众点评Web App

从架构设计到部署上线,带你学习React技术栈与核心思想

1071 学习 · 306 问题

查看课程