React & RTK:如何从中间件调度?



我使用RTK (Redux Toolkit)和RTK Query来管理我的商店和API请求。

为了全局捕获错误,我遵循了这个示例。这工作得很好,但现在我想注销用户,当一个请求被拒绝,因为401 - Unauthorized-错误。

const rtkQueryErrorLogger = api => next => action => {
if (isRejectedWithValue(action)) {
if (action.payload.status === 401) {
// Reset the store (not working)
const dispatch = useDispatch();
const dipatch(logout());

// Forward to login-screen (not working)
const navigation = useNavigation();
navigation.push('Login');
}
}
return next(action);
};

任何想法?提前感谢!

Redux中间件总是得到一个"迷你商店api ";对象作为最外层函数的参数,该函数包含{dispatch, getState}:

https://redux.js.org/tutorials/fundamentals/part-4-store writing-custom-middleware

在这个例子中,它是名为api的变量。

您可以从该对象访问dispatch,并在中间件中的任何时间调度操作。只需删除const dispatch = useDispatch行,并将下一行更改为api.dispatch()或从声明中的api对象中解构dispatch

相关内容

  • 没有找到相关文章