Reactjs 连接的反应路由更改仍会导致出现typeError

Reactjs 连接的反应路由更改仍会导致出现typeError,reactjs,axios,connected-react-router,Reactjs,Axios,Connected React Router,当用户身份验证超时时,我使用连接的路由器历史导航到登录屏幕。为此,我使用axios拦截器捕获所有响应,并检查它们是否返回指示上述情况的错误消息。我这样做如下所示: this.client.interceptors.response.use(response => response, error => { if(error.response.status === 401 && store && store.getState().use

当用户身份验证超时时,我使用连接的路由器历史导航到登录屏幕。为此,我使用axios拦截器捕获所有响应,并检查它们是否返回指示上述情况的错误消息。我这样做如下所示:

    this.client.interceptors.response.use(response => response, error => {
      if(error.response.status === 401 && store && store.getState().user){
        store.dispatch(actions.resetUser())
        history.push('/login?authErr')
      }
      Promise.reject(error.response)
    })
路由工作得很好,但是,仍然尝试渲染我导航离开的组件。由于后端响应错误,组件接收的数据为null,这导致应用程序抛出类型错误并崩溃


由于在auth超时后,应用程序中的任何api调用都可能发生这种情况,因此有没有办法抑制这种渲染?还是重置应用程序?我是否必须将所有api调用封装在一个try,catch中?

我找到了答案。当我编辑代码时,我删除了promise.reject前面的返回。因此,当响应作为错误返回时,它没有被处理

    this.client.interceptors.response.use(response => response, error => {
      if(error.response.status === 401 && store && store.getState().user){
        store.dispatch(actions.resetUser())
        history.push('/login?authErr')
      }
      return Promise.reject(error.response)
    })

您使用的是哪个版本的react路由器?“连接的react路由器”:“^6.4.0”,来自我的软件包。json这是连接到redux的绑定,您的软件包中还应该有一个
react路由器
依赖项。json您是对的“react路由器dom”:“^5.0.0”,“@types/react路由器dom”:“^4.3.1”,