【问题标题】:Why should I keep the state flat我为什么要保持状态平坦
【发布时间】:2016-12-15 00:15:23
【问题描述】:

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

【问题讨论】:

    标签: reactjs redux flux normalizr


    【解决方案1】:

    三个主要原因:

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

    【讨论】:

    • 非常感谢您的出色回答。它完全说服了我并帮助我更好地理解它:)
    【解决方案2】:

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

    【讨论】:

    • 非常感谢!现在我无法想象不让我的状态变平:)
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 2011-07-05
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多