如何在 createSlice reducer 中使用 dispatch?
Posted
技术标签:
【中文标题】如何在 createSlice reducer 中使用 dispatch?【英文标题】:How to use dispatch in createSlice reducer? 【发布时间】:2020-09-02 03:54:18 【问题描述】:例如,我有这个 slice,我想在 setUser 中使用 dispatch。我该怎么做?
const contactsSlice = createSlice(
name: 'contacts',
initialState: initialState,
reducers:
setUsers: (state, payload ) =>
// I want to use dispatch here
dispatch()
,
toggleFavorite: (state, payload ) =>
//
,
toggleCheck: (state, payload ) =>
//
)
【问题讨论】:
【参考方案1】:你不能,你在 dispatch
函数不可用的地方实现了一个减速器。阅读 reducers are 的内容。
相反,在 React 代码中添加逻辑:
useEffect(() =>
dispatch(contactsSlice.actions.setUser());
dispatch(loginSlice.actions.logicAction());
, []);
或者,在目标切片中添加一个额外的reducer。
const contactsSlice = createSlice(
name: "contacts",
initialState: initialState,
reducers:
setUsers: (state, payload ) =>
// setUsers logic
,
,
);
const loginSlice = createSlice(
name: "login",
initialState: initialState,
extraReducers:
"contacts/setUsers": (state, payload ) =>
// Same logic
,
,
);
或者编写一个中间件,例如createAsyncThunk
、dispatch
和getState
函数在thunkAPI
下可用。
【讨论】:
以上是关于如何在 createSlice reducer 中使用 dispatch?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 redux-toolkit 中的 createSlice 方法在不同的 reducer 函数中使用单个动作类型
如何重用 Redux Toolkit createSlice 函数中的 reducer 逻辑?
对 redux 工具包的 createSlice 中的多个操作做出反应