我使用的是Redux Toolkit,有三个组件,每个组件都有一个切片:a、B、C。
我需要组件A来调度一个动作,需要组件B和C来对它做出反应。我如何实现所有组件不相互依赖,类似于pub/sub模式?
首先,在对动作作出反应的组件B和C中添加extraReducers
。
然而,您可能会陷入循环引用问题。其中一个组件引用另一个组件,反之亦然。
作者提到了我曾经使用过的github上的一个解决方案。也就是说,将共享的减速器分离到一个单独的文件中。我对此的实现如下:
- 功能A/byId/actions.js包含定义的操作使用createAction
- featureB/byId/actions.js包含用createAction定义的操作
每个createAction都是类似于以下的操作:
const createTodo = createAction("todos/createTodo");
- featureA/byId/reducer.js从上面的两个action.js文件导入其extraReducer操作
- featureB/byId/reducer.js从上面的两个action.js文件导入其extraReducer操作
结果:在多个减速器中使用的操作没有循环参考问题。