3

我正在使用 Redux Toolkit,并且有三个组件,每个组件都有一个切片:A、B、C。

我需要组件 A 来调度一个动作,组件 B 和 C 来对它做出反应。如何实现所有组件不相互依赖,类似于发布/订阅模式?

4

1 回答 1

1

首先,添加extraReducers对动作做出反应的组件 B 和 C。

但是,您可能会陷入循环引用问题。其中一个组件引用另一个组件,反之亦然。

作者在 github 上提到了我使用过的解决方案。即,将共享的 reducer 分离到一个单独的文件中。我的实现如下:

  • featureA/byId/actions.js包含用 createAction 定义的动作。
  • featureB/byId/actions.js包含用 createAction 定义的动作。

每个 createAction 都是类似于以下的操作:

const createTodo = createAction("todos/createTodo");
  • featureA/byId/reducer.js 从上面的两个 action.js 文件中导入其 extraReducer-actions。
  • featureB/byId/reducer.js从上面的两个 action.js 文件中导入其 extraReducer-actions。

结果:在多个 reducer 中使用的操作没有循环引用问题。

于 2021-08-12T13:04:48.940 回答