【问题标题】:React + Redux + Immutable - how deep should immutable objects go?React + Redux + Immutable - 不可变对象应该有多深?
【发布时间】:2016-08-26 02:09:00
【问题描述】:

我有一个使用 React、Redux 和 Immutable 的全新项目。我创建了一个高度嵌套的不可变映射的状态。在什么时候(如果有的话)在我将它的部件向下传递到子组件的道具时应该调用它?

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

不利的一面是,尚不清楚表示组件深处的对象是不可变类还是普通 JS 对象。

【问题讨论】:

  • 子组件也可以使用不可变接口。 this.props.obj.get('foo') 而不是 this.props.obj.foo

标签: reactjs redux immutable.js


【解决方案1】:

我建议将其一直保持为不可变。

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

你有什么理由想要调用 toJS 吗?最终,您最终还是会访问 UI 的原始值,因此使用 get/getIn 访问它们很容易。作为奖励,这些不可变类型带有一些方便的方法。

至于你提到的缺点,如果你使用react-immutable-proptypes,它可以很容易地看到/执行每个组件的期望。而且,如果您决定一直使用不可变,那么无论如何都没有什么可记住的。

【讨论】:

  • 啊……是的……道具类型。好点!谢谢你的回答!
猜你喜欢
  • 2017-08-27
  • 2016-08-09
  • 1970-01-01
  • 2016-10-25
  • 2019-09-20
  • 2018-07-03
  • 2016-10-02
  • 1970-01-01
  • 2016-07-06
相关资源
最近更新 更多