我有一个使用 React、Redux 和 Immutable 的全新项目。我创建了一个高度嵌套的不可变映射的状态。如果有的话,我应该在什么时候调用 toJS,因为我将它的部分向下传递到子组件的 Prop 中?
我认为将其始终保留为不可变类之一(尤其是在新项目中)是有意义的,而且我真的很喜欢 getIn 功能。
不利的一面是,尚不清楚表示组件深处的对象是不可变类还是纯 JS 对象。
最佳答案
我建议将其一直保持为不可变。
如果您在将不可变状态的一部分作为 Prop 传递给子组件之前调用了 toJS,那么您将失去该子组件能够在其 shouldComponentUpdate 中对该 Prop 进行简单引用检查的好处。见advanced performance section of the React docs了解更多信息。
你有什么理由想要调用 toJS 吗?最终,无论如何,您最终都会访问 UI 的原始值,因此使用 get/getIn 访问它们很容易。作为奖励,这些不可变类型带有一些方便的方法。
至于你提到的缺点,如果你使用 react-immutable-proptypes它使查看/执行每个组件的期望变得容易。而且,如果您决定一直使用不可变,那么无论如何都没有什么可记住的。
关于reactjs - React + Redux + Immutable - 不可变对象(immutable对象)应该有多深?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963320/