Reactjs Redux工具包-全局拒绝
我正在使用Redux工具包,我有一大堆切片。 我有一个名为Reactjs Redux工具包-全局拒绝,reactjs,redux,redux-toolkit,Reactjs,Redux,Redux Toolkit,我正在使用Redux工具包,我有一大堆切片。 我有一个名为sessionSlice的特定切片,其中包含一些外还原程序,从其他切片导入thunks,如下所示: [fetchDashboardUserReq.rejected]: (state, action) => { setSessionExpired(state, action); }, [fetchDashboardUsersReq.rejected]: (state, action) =>
sessionSlice
的特定切片,其中包含一些外还原程序
,从其他切片导入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-有没有一种方法可以让一个“global”被拒绝的
函数,在那里我可以检查它?而不是有这么多重复的代码
提前谢谢 是的,如果您将“extraReducers”的生成器回调表示法与匹配器一起使用
功能isRejectedAction(操作){
return action.type.endsWith('已拒绝')
}
创建切片({
名称:'计数器',
初始状态:0,
还原子:{},
外部减速器:(生成器)=>{
建设者
addMatcher先生(
以色列驱逐行动,
(状态、动作)=>{
// ...
}
)
},
})
但请记住,还原剂不能有副作用,因此您的
setSessionExpired
方法只能修改状态,而不能修改外部。否则,您必须使用中间件。您可以在redux中间件中执行此操作,创建一个自定义中间件函数,该函数可以识别任何请求上的会话过期错误,然后在不调用next的情况下发送特殊操作。