React + Redux + Immutable - 不可变对象有多深?

时间:2016-05-01 05:16:33

标签: reactjs redux immutable.js

我有一个使用React,Redux和Immutable的全新项目。我创建了一个重度嵌套的Immutable Map的状态。在什么时候,如果有的话,我应该在它上面调用JS,因为我将它的部分传递给子组件的道具?

我认为保持它总是一个不可变类(特别是在一个新项目中)是有意义的,我真的很喜欢getIn功能。

在下面,不清楚表示组件内部的对象是不可变类还是普通JS对象。

1 个答案:

答案 0 :(得分:6)

我建议将它永远保持为永恒。

如果你在将它作为一个道具传递给子组件之前曾在一段你的不可变状态上调用JS,那么你将失去该子组件能够对该道具进行简单参考检查的好处在其shouldComponentUpdate中。有关详细信息,请参阅advanced performance section of the React docs

你有没有理由打电话给JS?最终,您最终还是会最终访问UI的原始值,因此使用get / getIn访问它们非常容易。作为奖励,那些不可变类型带有一些方便的方法。

至于你提到的缺点,如果你使用react-immutable-proptypes,它可以很容易地看到/强制执行每个组件所期望的内容。如果你决定永远不变,那么无论如何都无需记住。