我在 Redux 中使用 ReactJs,在一些教程和代码中,我看到有人建议并使用 normalizr 来保持状态平坦。但是保持平坦的真正优势是什么?如果我不这样做,我会遇到任何问题吗?有必要吗 ?
我为什么要保持状态平坦
IT技术
reactjs
redux
flux
normalizr
2021-05-15 07:28:41
2个回答
三个主要原因:
- 不可变地更新嵌套的 Javascript 对象通常会导致更难维护的丑陋代码,除非您使用实用程序库来结束该过程
- 不变地更新嵌套数据要求您返回嵌套层次结构中所有项目的新副本。由于组件通常对数据进行浅等式引用比较以查看它们是否需要更新,更新嵌套数据通常意味着更新更多的对象,并且即使实际数据没有不同,更多的组件也可能需要重新渲染。
- 平面数据,尤其是规范化数据,可以使用一些更优化的方法来定义组件(例如一个列表,其中每个列表项组件本身都是连接的,给定一个项目 ID 作为props,并负责通过以下方式查找自己的项目数据)那个身份证)
我假设通过保持平坦,您的意思是没有嵌套在您的状态对象中。
在您的状态中嵌套是不可取的,因为您必须根据某些事件不断更改您的状态。
如果您查看 redux 文档,他们希望您拥有纯减速器。使您的函数成为纯函数的一部分不是修改它的参数。
当您有大量嵌套时,很难在不无意中修改状态对象的情况下更改状态,因为所有 JS 对象都是通过引用传递的。当你有很多嵌套时,你必须在修改它之前制作状态对象的深层副本。
其它你可能感兴趣的问题