我为什么要把州保持平稳

时间:2016-08-09 05:05:02

标签: reactjs redux flux normalizr

我在Redux上使用ReactJs,在一些教程和代码中我看到人们建议并使用normalizr来保持状态平稳。但保持平稳的真正优势是什么?如果我不这样做,我会遇到任何问题吗?有必要吗?

2 个答案:

答案 0 :(得分:17)

三个主要原因:

  • 通过不可更改地更新嵌套的Javascript对象通常会导致难以维护的丑陋代码,除非您使用实用程序库来完成整个过程
  • 不可更新地更新嵌套数据需要您返回嵌套层次结构中所有项目的新副本。由于组件通常对数据进行浅等参考比较以查看是否需要更新,因此更新嵌套数据通常意味着更新对象更多,即使实际数据不是更多,也可能需要重新渲染更多组件。不同。
  • 平面数据,特别是规范化数据,可以实现一些更优化的方法来定义组件(例如每个列表项组件本身连接的列表,给定项ID作为道具,并负责查找自己的组件项目ID的数据)

答案 1 :(得分:8)

我假设通过保持平坦,你的意思是没有在你的状态对象中嵌套 不建议在你所在州筑巢,因为你必须根据某些事件不断改变你的状态 如果你看看redux文档,他们希望你有纯粹的reducer。使你的函数变得纯粹的一部分并不是修改它的论据 当你有很多嵌套时,很难改变状态而不会无意中修改状态对象,因为所有JS对象都是通过引用传递的。当你有很多嵌套时,你必须在修改它之前制作状态对象的深层副本。