首页 > 解决方案 > 如何在 redux 工具包中转换具有多个调度的动作创建者?

问题描述

我正在尝试将我的 redux 商店移向 redux 工具包。有利的是,我想将它们全部放入createSlice.

在我收到许多此类调度之前:

export const resetSelection = () => (dispatch, getState) => {
  dispatch(clearSelection()); # clears current selection
  dispatch(showLoader()); # shows global loading spinner
  dispatch(fetchSelection()); # fetching selection with no filters applied
};

注意:showLoader 是不同减速器的一部分。

或者:

export const loadDataTypes = () => async (dispatch) => {
  dispatch(loadingDataTypes());
  const data = await genericJsonFetch(GET_DATA_TYPES);
  dispatch(setDataTypes(data));
  dispatch(loadingDataTypes());
};

我将如何使用 redux 工具包来做到这一点,因为我显然无法在 reducer 中触发调度?

标签: reactjsreduxreact-reduxredux-toolkit

解决方案


该代码将完全像以前一样工作,并且可以继续与 redux 工具包一起使用。

Redux 工具包给你一些有用的抽象,但你不应该只使用 redux 工具包给你的工具。

请注意,尽管官方的 redux 风格指南建议您允许多个 reducer 响应相同的操作。所以大多数时候你应该只调度一个动作并使用extraReducers.


推荐阅读