【发布时间】:2021-03-14 07:54:41
【问题描述】:
我想知道是否可以(或一个好的做法)从 extraReducer 调用 dispatch(someDumbAction())。
例如,我在来自createSlice 的reducers 对象中有一个setData() 操作。
我想直接在我的组件中调用setData()。但我也想在 extraReducer 监听器中调用它,以便重用减速器逻辑,如下所示:
// Thunk Action
export const getData = createAsyncThunk('data/getData', async (params) => {
return await api.get({ params })
})
// Slice creation
const slice = createSlice({
name: 'data',
initialState: [],
reducers: {
setData: (state, { payload }) => {
state.push(payload);
})
},
extraReducers: (builder: any) => {
builder.addCase(getData.pending, (state) => {
//...
})
builder.addCase(getData.rejected, (state) => {
//...
})
builder.addCase(getData.fulfilled, (state, { payload }) => {
// Here I want to dispatch `setData` action, in order to reuse that logic
// dispatch(setData(payload));
})
},
})
// In any component: dispatch(setData([...]);
【问题讨论】:
标签: reactjs redux react-redux redux-toolkit