首页 文章

React redux prev state忽略并重写下一个状态

提问于
浏览
0

下面是一个例子,我的应用程序出了什么问题,我无法弄清楚如何修复它以及它为什么会发生 . 我做了一个简单的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 回答

  • 0

    只需添加另一个

    .then(response => dispatchActionAfterActualLogoutWasMade())
    

    以便在初始注销请求完成后调度操作

    在您收到服务器的响应后,它会向reducer发送一个动作以清除应用程序状态 .

相关问题