【问题标题】:How can I subscribe to changes in a redux store within an actions file如何在操作文件中订阅 redux 存储中的更改
【发布时间】:2018-07-20 07:26:17
【问题描述】:

我有以下代码

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

如果我在 redux 操作文件中运行它,我的 typeof 是未定义的。 如果我在 vanilla js 中运行它,我的 typeof 是函数。

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

但是,当在 reducer(reducer1、reducer2)之间共享时,其中一些操作必须导致运行特定于特定存储域的操作。

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

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

这就是为什么我想在操作文件中使用 reduxStore.subscribe 的原因。我该怎么做,或者不知道什么是做我想做的事情的正确方法,我觉得它必须是可行的。

【问题讨论】:

    标签: redux react-redux


    【解决方案1】:

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

    做到这一点的方法是组合 reducer(而不是组合它们)。在此处查看实际操作:Stack Overflow

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

    • reducer 应该是纯的。这意味着我们不会从 reducer 内部进行 ajax 调用(或其他副作用)。那是动作领域(例如:redux-thunk)和中间件。
    • 在大多数应用程序中,实际上应该只有一个商店。因此,如果您有一种模式,其中一个商店订阅另一个商店,那么您可能应该重构您的代码以只有一个商店。需要说明的是,您可以将多个 reducer 组合(或组合)在一个 store 中——这就是 Redux 的工作原理。

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 1970-01-01
      • 2018-11-03
      • 2017-04-03
      • 1970-01-01
      • 2020-10-18
      • 2016-07-12
      • 2016-08-02
      • 1970-01-01
      相关资源
      最近更新 更多