Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Redux工具包-全局拒绝_Reactjs_Redux_Redux Toolkit - Fatal编程技术网

Reactjs 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) =>

我正在使用Redux工具包,我有一大堆切片。 我有一个名为
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的情况下发送特殊操作。