reactjs - React + Redux + Immutable - 不可变对象(immutable对象)应该有多深?

原文 标签 reactjs redux immutable.js

我有一个使用 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/

相关文章:

reactjs - React-router:除非刷新,否则组件不会呈现

javascript - immutable.js过滤和变异(删除)找到的条目

javascript - reducer 在Redux中得到Function not Object,这是怎么回事?

javascript - 哑组件可以使用/渲染 redux 容器组件吗?

javascript - 在JavaScript中将对象设置为键值(值是数组或列表)的不可变映射

javascript - 为什么不可变性在 JavaScript 中如此重要(或需要)?

javascript - 有没有一种方法可以基于Firebase Angular 色保护url?

css - react CSS过渡组动画单个元素

reactjs - 如何在页面上多次嵌入相同的 redux-form?

reactjs - 下一个 js Router.push 重新加载页面