React / Redux:未处理的拒绝(TypeError):无法读取未定义的属性“ data”

时间:2020-06-09 21:15:50

标签: javascript reactjs redux axios

我已经尝试解决了一段时间。我正在追踪大约一年前的YouTube教程,因此可能要归咎于Redux版本。

export const signupUser = (newUserData, history) =>(dispatch) =>{
    dispatch({type: LOADING_UI});
    axios.post('/signup', newUserData)
            .then(res =>{
                setAuthorizationHeader(res.data.token);
                dispatch(getUserData());
                dispatch({ type: CLEAR_ERRORS}); //in case there are any errors on form prior to redirecting to home page
                this.props.history.push('/');
            })
            .catch(err => {
                dispatch({
                  type: SET_ERRORS,
                  payload: err.response.data
                });
              });
}

源位于catch块中:

|             .catch(err => {
  14 |                 dispatch({
  15 |                   type: SET_ERRORS,
> 16 |                   payload: err.response.data
  17 |                 });
  18 |               });
  19 | }

这是错误消息中的编译版本:

  1317 |   }).catch(err => {
  1318 |     dispatch({
  1319 |       type: _types__WEBPACK_IMPORTED_MODULE_0__["SET_ERRORS"],
> 1320 |       payload: err.response.data
       |                             ^  1321 |     });
  1322 |   });
  1323 | };

任何帮助将不胜感激!我已经考虑了几个类似的问题,但是无法解决问题。

1 个答案:

答案 0 :(得分:0)

Axios返回不同的错误类型,需要对它们进行不同的处理。您可能没有收到“响应”错误。您可以尝试以下操作:

  .catch(err => {
    if (err.response) {
      console.log(err.response.data);
      console.log(err.response.status);
      console.log(err.response.headers);
    } else if (err.request) {
      console.log(err.request);
    } else {
      console.log(err.message);
    }

请参阅:https://github.com/axios/axios#handling-errors