链接还原状态变化的惯用方法是什么?

时间:2017-03-15 17:18:29

标签: reactjs redux react-redux reselect

我试图找出解决这个问题的惯用方法:

我有一个reducer,其中包含“应用过滤器”列表和“记录”列表。当我更改过滤器或记录时,“过滤记录”列表也应该更改,但将过滤器应用于可能是长记录列表的内容可能很慢。

现在,我正在调度“添加过滤器”或“删除过滤器”操作以更改“已应用过滤器”列表。这导致重新计算“过滤记录”列表(目前在减速器中完成)。

我使用两个容器组件,一个用于显示"过滤芯片列表",另一个用于显示"过滤记录列表"。

因为应用过滤器需要一段时间,并且每次过滤器更改时都会执行,因此从UI中删除过滤器的过程似乎很滞后 - 我点击删除过滤器,删除的过滤器不会消失直到reducer完成所有工作,包括更新过滤器列表和应用新的过滤器列表。

我宁愿拥有的是:

  1. 删除过滤器,它会尽快从UI中消失。 (即,广播的状态更改仅包括已删除的过滤器)
  2. 同时,我希望在后台应用过滤器的过程,一旦完成,就会调度另一个操作来更改过滤记录列表。
  3. 应用过滤器并且更新过滤后的记录的操作已经触发后,我想要我的"过滤记录列表"要更新的组件。
  4. 因此,基本上我希望状态更改可能触发另一个状态更改,但我想在这两个状态更改之间广播中间状态。

    我知道我必须从我的减速器中获得笨重的逻辑并采取行动,但我在应该如何/应该采用这种逻辑的过程中挣扎。我有这种唠叨的感觉,我把我的大脑缠绕在它的轴上,而我现在过度复杂化了,但我似乎无法回到简单/正确的方法。

    非常感谢任何帮助!

    根据我添加的评论进行编辑,但也希望将其内联在此处:

    我在原来的问题中说错了,这里有很大的修正 -

    我实际上并没有计算出"过滤后的记录列表"在reducer中 - 我在" RecordList"上有一个重选选择器。收集"记录的容器"和"过滤器"并返回已过滤记录的列表。

    我认为这更多是因为" RecordList"渲染举起" FilterList"渲染,所以我要上升组件层次结构,看看我是否可以修复它。

    我仍然会提出任何建议!

0 个答案:

没有答案