在redux observable中,我如何控制还原者或史诗是否首先对动作作出反应?

在redux observable中,我如何控制还原者或史诗是否首先对动作作出反应?,redux,redux-observable,Redux,Redux Observable,例如,对于某些动作,我希望减速器在epics之前进行处理。对于其他操作,反之亦然。有什么方法可以做到这一点吗?据我所知,您不能修改它-减速器总是先运行。最重要的是: 中间件总是首先将操作传递给管道中的下一个中间件,从而使其到达还原器。只有在它返回之后,它才会将动作输入史诗。Redux Saga做了完全相同的事情。对于您希望史诗在减速器之前运行的任何操作,请执行2个操作 动作A:在应用程序中发送此消息,在epic中观察它。如果合适,不要在减速器中对其进行任何操作 行动B:如果行动A符合正确的条件,

例如,对于某些动作,我希望减速器在epics之前进行处理。对于其他操作,反之亦然。有什么方法可以做到这一点吗?

据我所知,您不能修改它-减速器总是先运行。最重要的是:


中间件总是首先将操作传递给管道中的下一个中间件,从而使其到达还原器。只有在它返回之后,它才会将动作输入史诗。Redux Saga做了完全相同的事情。

对于您希望史诗在减速器之前运行的任何操作,请执行2个操作

动作A:在应用程序中发送此消息,在epic中观察它。如果合适,不要在减速器中对其进行任何操作


行动B:如果行动A符合正确的条件,则在Epic中发送此命令。在减速机中处理此问题。

除此之外,epics在减速机之后运行:“epics在减速机已经收到它们之后,沿着正常的Redux调度通道运行[…]”。根据,epics在减速机之后运行。你想达到什么目标?是否希望在数据更改时触发操作?提供了一些关于这方面的见解。@NikosParaskevopoulos在史诗中,我派遣了一个行动,创造了一个承诺。当承诺成功时,我想在reducer处理它之前发送另一个操作。我这样做是因为我希望第二个动作根据其发送方式的不同而表现不同。@LeoJiang嗯,现在还不清楚您要做什么。你说的“我想在减速机处理它之前发送另一个操作”是什么意思?如果你描述你想完成什么,而不是你认为你应该如何完成,也许我们会更好地理解?i、 e.“我这样做是因为我希望第二个动作根据其发送方式的不同而表现不同”这很接近,但没有说明原因。根据目前提供的信息,这似乎是一个奇怪的要求。有一个操作
FETCH\u USERS
,它创建了一个网络请求。当网络请求完成时,
FETCH\u USERS\u completed
被调度,并且一个reducer将获取的用户附加到要显示的用户列表中。还有一个操作
FILTER\u USERS
,它重用
FETCH\u USERS
来获取用户列表,但应用了过滤器。但是,在reducer附加获取的用户之前,我想清除要显示的用户列表。这样,对于筛选,获取的用户将替换现有用户,而不是附加到现有用户。(续)我想等到网络请求成功后再清除用户,因为我认为有一个灰显的用户列表比有一个加载屏幕看起来更好。当操作a没有任何更改时,这会导致存储广播有意义吗?@fionbio如果确实没有更改,我不确定这是否总是有意义的在减速机内制造。我认为它通常只是为了应用程序中更简单、一致的API。当我使用此模式时,操作A通常会切换一个布尔标志,如“isLoading:true”,然后epic将发送一个成功或失败操作,每个操作都会将标志重置为“false”,以及对状态的任何其他更改。谢谢。在探索redux之后,我放弃了,去了Mobx,我现在是一个更快乐的人了。
  return action => {
    const result = next(action);
    input$.next(action);
    return result;
  };