Redux 工具包 - 全局拒绝
Redux Toolkit - global reject
我正在使用 Redux Toolkit,并且我有一堆切片。
我有一个名为 sessionSlice
的特定切片,其中包含一些 extraReducers
,从其他切片导入 thunks
,如下所示:
[fetchDashboardUserReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
[fetchDashboardUsersReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
[fetchDashboardAchievementsReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
setSessionExpired
正在检查错误是否是由于用户的会话已过期造成的。
我正在为一堆不同的 createAsyncThunk
s 做这个 - 有没有办法拥有一个“全局”rejected
函数,我可以在哪里检查这个?而不是有那么多重复的代码。
提前致谢!
是的,如果您将 `extraReducers' 的构建器回调符号与匹配器一起使用。
function isRejectedAction(action) {
return action.type.endsWith('rejected')
}
createSlice({
name: 'counter',
initialState: 0,
reducers: {},
extraReducers: (builder) => {
builder
.addMatcher(
isRejectedAction,
(state, action) => {
// ...
}
)
},
})
但请记住,reducer 不能有副作用,因此您的 setSessionExpired
方法必须只修改 state
,没有任何外部内容。否则你必须使用中间件。
我正在使用 Redux Toolkit,并且我有一堆切片。
我有一个名为 sessionSlice
的特定切片,其中包含一些 extraReducers
,从其他切片导入 thunks
,如下所示:
[fetchDashboardUserReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
[fetchDashboardUsersReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
[fetchDashboardAchievementsReq.rejected]: (state, action) => {
setSessionExpired(state, action);
},
setSessionExpired
正在检查错误是否是由于用户的会话已过期造成的。
我正在为一堆不同的 createAsyncThunk
s 做这个 - 有没有办法拥有一个“全局”rejected
函数,我可以在哪里检查这个?而不是有那么多重复的代码。
提前致谢!
是的,如果您将 `extraReducers' 的构建器回调符号与匹配器一起使用。
function isRejectedAction(action) {
return action.type.endsWith('rejected')
}
createSlice({
name: 'counter',
initialState: 0,
reducers: {},
extraReducers: (builder) => {
builder
.addMatcher(
isRejectedAction,
(state, action) => {
// ...
}
)
},
})
但请记住,reducer 不能有副作用,因此您的 setSessionExpired
方法必须只修改 state
,没有任何外部内容。否则你必须使用中间件。