代码之家  ›  专栏  ›  技术社区  ›  user254694

如何订阅操作文件中redux存储区中的更改

  •  0
  • user254694  · 技术社区  · 7 年前

    我有以下代码

    const reduxStore =  require('redux/store');
    console.log(typeof reduxStore.subscribe);
    

    如果我在redux操作文件中运行它,那么我的类型是未定义的。 如果我用普通js运行它,我的类型是函数。

    现在,这样做可能有违直觉,但我有一个模式,我有一个共享操作文件,也就是说,在这个文件中定义的操作可以在两个不同的还原器中使用。

    但是,在还原器(reducer1、reducer2)之间共享这些操作时,其中一些操作必须导致单独运行到特定存储域的操作。

    因此,取决于reducer1.acceptgeocode在使用reducer2的应用程序部分运行时会发生什么,然后reducer2.geocodesuccess应该运行或reducer2.geocodefailed

    对我来说,订阅reducer2操作js中的更改似乎是最简单的,然后在更改时发送我应该使用的本地操作。

    所以我想在一个操作文件中使用reduxStore.subscribe我该怎么做,否则我会失败我想做的事我觉得必须做的事我该怎么做。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ian    7 年前

    如果我理解正确,你想让reducer 2知道reducer1是如何处理一个动作的,对吗?

    方法是通过 作曲 减速器(与组合相反)请参见此处的操作: Stack Overflow

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

    • 减速器应该是 纯净的 . 这意味着我们不会从reducer内部执行ajax调用(或其他副作用)这是操作(例如:redux thunk)和中间产品的领域。
    • 在大多数应用程序中,实际上应该只有一个存储。因此,如果您有一个模式,其中一个存储订阅另一个,那么您可能应该重构您的代码,使其只有一个存储为了清楚起见,您可以在一个存储中组合(或组合)几个redux——这就是redux的设计工作原理。