我至少有两种解决问题的方法。
在每次更新(地图,过滤器,查找)
将“CurrentState”对象保留在redux状态。
我选择创建一个存储计算结果的CurrentState对象(它计算reducer函数内的结果)。
方法2保存了处理器计算,但感觉很脏。
在状态中有一个CurrentState对象(从reducer更新)被认为是一个反行为吗?
提前谢谢!
答案 0 :(得分:0)
从您的问题中并不完全清楚 - 但我认为您正在谈论情况,您可以从商店中的其他数据计算“结果”,并询问是否(在存储中)存储它是一种良好的模式。
好吧,一般情况下我不推荐它,因为在商店中保留冗余数据会导致数据错误不一致 - 如果您忘记保持数据同步(例如,当您或其他从事该项目的人员改变一个数据而忘记改变订单的地方)。
标准模式通常是使用选择器和memonization(参见https://github.com/reactjs/reselect)。我们的想法是仅在您的商店中保留规范化数据,但在视图中使用选择器。选择器负责“缓存”(memonize)广泛的计算。选择器的另一个优点是它为您的应用程序提供了间接级别,您可以轻松地改进您的状态(随着项目的增长),而不会影响整个应用程序。另一方面,对于小型和一次性项目选择器可以只是“另一个”样板 - 但一般来说我建议使用它们。
答案 1 :(得分:0)