下面是一个例子,我的应用程序出了什么问题,我无法弄清楚如何修复它以及它为什么会发生 . 我做了一个简单的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)
结果,用户无法注销 .
1 回答
只需添加另一个
以便在初始注销请求完成后调度操作
在您收到服务器的响应后,它会向reducer发送一个动作以清除应用程序状态 .