【发布时间】:2020-11-08 15:29:27
【问题描述】:
我是 React 新手,我正在学习使用 React 来构建 Web 应用程序。我发现 Redux Toolkit 很有用,并使用它的 createSlice() 函数来实现基本功能。但是,我遇到了一个与“最佳实践”相关的问题,我不确定我是否正确构建了应用程序的架构。
假设我有一个 user 对象存储在 Redux 中。我创建了一个异步 thunk 函数来获取相关信息:
export const getUserInfo = createAsyncThunk('user/get', async (userId, thunkApi) => {
// fetching information using api
}
相应地,我处理pending/fulfilled/rejected回调如下:
const userSlice = createSlice({
name: 'user',
initialState,
reducers: {
setShowProgress(state, action: PayloadAction<boolean>) {
state.showProgress = action.payload;
},
clearError(state) {
state.error = null;
state.errorMessage = null;
}
},
extraReducers: builder => {
builder.addCase(getUserInfo.pending, (state, action) => {
// My question is here >_<
}
builder.addCase(getUserInfo.fulfilled, (state, action) => {
// handle data assignments
})
builder.addCase(getUserInfo.rejected, (state, action) => {
// handle error messages
})
}
})
考虑到修改显示状态标志在其他功能 api 实现中很常见,我将这两个函数(setShowProgress() 和 clearError())包装在 reducers 中。我的问题来了:如何引用getUserInfo.pending函数中的两个函数?
虽然我可以只在getUserInfo.pending 中分配showProgress 和error 状态变量,而不是尝试调用reducer 函数,但是当我将来实现其他获取操作时肯定会引入重复代码。如果这不是推荐的模式,那么这种场景的最佳做法是什么?
【问题讨论】:
标签: reactjs redux react-redux redux-toolkit