我为什么要把州保持平稳

Man*_*hoo 13 flux reactjs redux normalizr

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

mar*_*son 18

三个主要原因:

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


Jef*_*cko 9

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