在一个例子中,我的应用程序出了什么问题,我无法弄清楚如何修复它以及它为什么会发生。 我做了一个简单的API调用来获取一些数据
dispatch(isLoadingData(true));
api({
method,
url,
headers: { Authorization: `JWT ${APP.token}` }
})
.then(async (response) => {
return resolve(dispatch(await updateData(response)));
}).catch(reject);
}).catch(async (err) => {
dispatch(isError(err));
dispatch(await isLoadingData(false));
throw err;
});
如果API响应具有401状态代码,则通过调用下一个操作启动注销过程。
case LOGOUT_USER: {
Actions.main({ type: 'reset' });
return {
...INITIAL_STATE,
};
}
将用户缩减器恢复为
{ user: '', token: '' };
(它在Promise在upper函数中返回响应之前调用)。所以序列看起来像这样
1)isLoadingData(true)
2)logoutUser()(这会清除用户数据)
3)isError(错误)(这又有用户和令牌)
4)isLoadingData(false)
因此,用户无法注销。
答案 0 :(得分:0)
只需添加另一个
.then(response => dispatchActionAfterActualLogoutWasMade())
以便在初始注销请求完成后调度操作
在您收到服务器的响应后,会向reducer发送操作以清除应用状态。