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

标签 reactjs redux immutable.js

我有一个使用 React、Redux 和 Immutable 的全新项目。我创建的状态是一个高度嵌套的不可变映射。当我将它的各个部分传递到子组件的 props 中时,我应该在什么时候(如果有的话)调用 toJS 呢?

我认为将其始终保留为不可变类之一(尤其是在新项目中)是有意义的,而且我真的很喜欢 getIn 功能。

缺点是,不清楚演示组件深处的对象是 Immutable 类还是普通 JS 对象。

最佳答案

我建议将其始终保持为不可变。

如果您在将不可变状态作为 prop 传递给子组件之前调用 toJS,那么您将失去该子组件能够在其组件中对该 prop 进行简单引用检查的好处。应该组件更新。请参阅advanced performance section of the React docs了解更多信息。

您有什么理由想要调用 toJS 吗?最终,无论如何,您最终都会访问 UI 的原始值,因此使用 get/getIn 访问它们非常容易。作为奖励,这些不可变类型附带了一些方便的方法。

至于你提到的缺点,如果你使用react-immutable-proptypes它使您可以轻松查看/执行每个组件的期望。如果您决定一直使用 Immutable,那么就没有什么需要记住的了。

关于reactjs - React + Redux + Immutable - 不可变对象(immutable对象)应该有多深?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963320/

相关文章:

javascript - 不带钩子(Hook)地更新文档标题

javascript - React JS 将组件添加到特定的点击行

javascript - 创建 Redux-saga 监听器

javascript - 使用 React Immutability helpers 或 Immutable js React 合并不可变对象(immutable对象)数组

javascript - 如何使用react-testing-library在自定义组件上触发onChange事件?

css - 如何在 React 中隐藏包装组件

node.js - 如何使用 npm 安装所有要求?

javascript - Provider 中的无效 Prop child

immutable.js - 获取 OrderedMap 的子集/过滤器

javascript - 在不可变对象(immutable对象)中添加具有键值对的新对象