React Redux反模式计算并存储结果存储?

时间:2018-02-17 08:45:02

标签: reactjs redux anti-patterns

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

  1. 在每次更新(地图,过滤器,查找)

  2. 的视图内表示计算
  3. 将“CurrentState”对象保留在redux状态。

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

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

    在状态中有一个CurrentState对象(从reducer更新)被认为是一个反行为吗?

    提前谢谢!

2 个答案:

答案 0 :(得分:0)

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

好吧,一般情况下我不推荐它,因为在商店中保留冗余数据会导致数据错误不一致 - 如果您忘记保持数据同步(例如,当您或其他从事该项目的人员改变一个数据而忘记改变订单的地方)。

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

答案 1 :(得分:0)

这是一种强硬的反模式。

如果你正在阅读这个机会,你不完全理解redux,我想推荐

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