【问题标题】:React Redux anti pattern to calculate and store results in store?React Redux 反模式计算结​​果并将结果存储在存储中?
【发布时间】:2018-02-17 08:45:02
【问题描述】:

我至少有两种解决问题的方法。

  1. 在每次更新(地图、过滤器、查找)时重新调整视图内部的计算

  2. 在我的 redux 状态中保留一个“CurrentState”对象。

我选择创建一个 CurrentState 对象来存储我的计算结果(它在 reducer 函数中计算结果)。

方法2节省了处理器计算,但感觉很脏。

在 state 中拥有 CurrentState 对象(从 reducer 更新)是否被视为反模式

提前谢谢你!

【问题讨论】:

    标签: reactjs redux anti-patterns


    【解决方案1】:

    您的问题并不完全清楚 - 但我假设您在谈论情况,您可以从商店中的其他数据计算“结果”,并询问是否将其(冗余)存储在商店中是一种好的模式。

    好吧,通常我不会推荐它,因为在存储中保留冗余数据会导致数据不一致的错误 - 如果您忘记保持数据同步(例如,当您或其他从事项目工作的人会更改一个数据并忘记更改订购地点)。

    对此的标准模式通常是使用选择器和记忆(参见https://github.com/reactjs/reselect)。这个想法是在你的存储中只保留规范化的数据,但在你的视图中使用选择器。选择器负责“缓存”(记忆)大量计算。选择器的另一个优点是它为您的应用程序提供了间接级别,并且您可以轻松地发展您的状态(随着项目的增长)而不会影响您的整个应用程序。另一方面,对于小型和一次性项目,选择器可能只是“另一个”样板 - 但总的来说我建议使用它们。

    【讨论】:

      【解决方案2】:

      这是一个严格的反模式。

      如果你正在阅读这篇文章,你可能还没有完全理解 redux,我想推荐一下

      https://github.com/leoasis/redux-immutable-state-invariant

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-06
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 2010-09-11
        相关资源
        最近更新 更多