如何在动作文件中的Redux存储中订阅更改

时间:2018-07-18 11:54:41

标签: redux react-redux

我有以下代码

print(*list(map(...)))

如果我在redux动作文件中运行它,则typeof是不确定的。 如果我在普通js中运行它,我的typeof是函数。

现在也许这样做似乎违反直觉,但是我有一个模式,其中有一个共享的动作文件,也就是说,在此文件中定义的动作可以在两个不同的reducer中使用。

但是其中一些操作在减速器(reducer1,reducer2)之间共享时,必须导致运行特定于特定商店域的操作。

所以,这取决于在使用reducer2在应用程序的一部分中运行reducer1.acceptGeoCode时会发生什么情况,然后应运行reducer2.geoCodeSuccess或reducer2.geoCodeFailed

对我来说,最容易在我的reducer2动作js中订阅更改,然后在更改时分派我应该使用的本地动作。

这就是为什么我要在操作文件中使用reduxStore.subscribe的原因。我该怎么做,或者失败了做自己想做的正确方法,我认为这是可行的。

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您希望让reducer 2知道reducer1是如何处理动作的,对吗?

做到这一点的方法是通过组成减速器(而不是组合减速器)。在此处查看实际操作:Stack Overflow

可能对您有所帮助的其他几点:

  • 异径管应为。这意味着我们不从减速器内部进行ajax调用(或其他副作用)。这就是行动(例如:redux-thunk)和中间件的领域。
  • 在大多数应用程序中,实际上应该只有一家商店。因此,如果您有一种模式,其中有一个商店订阅另一个商店,那么您应该将代码重构为只有一个商店。需要明确的是,您可以在一个商店中将几个化合器组合(或组成),这就是Redux的工作方式。