反应 - Redux |未处理的拒绝(类型错误):无法读取未定义的属性'data'



一切都很好,直到登录>调度>有效负载:err.response.data。然后给出一个错误: 未处理的拒绝(类型错误(:无法读取未定义的属性"数据" 我已经检查了许多来源,但我找不到问题所在。 在寄存器中,payload:err.response.data工作得很好。但 登录时,给出此错误

import axios from "axios";
import setAuthToken from "../utils/setAuthToken";
import jwt_decode from "jwt-decode";
import { GET_ERRORS, SET_CURRENT_USER } from "./types";
// Register User
export const registerUser = (userData, history) => dispatch => {
axios
.post("/api/users/register", userData)
.then(res => history.push("/login"))
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err.response.data
})
);
};
// Login - Get User Token
export const loginUser = userData => dispatch => {
axios
.post("/api/users/login", userData)
.then(res => {
// Save to localStorage
const { token } = res.data;
// Set token to ls
localStorage.setItem("jwtToken", token);
// Set token to Auth header
setAuthToken(token);
// Decode token to get user data
const decoded = jwt_decode(token);
// Set current user
dispatch(setCurrentUser(decoded));
})
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err.response.data
})
);
};
// Set logged in user
export const setCurrentUser = decoded => {
return {
type: SET_CURRENT_USER,
payload: decoded
};
};
// Log user out
export const logoutUser = () => dispatch => {
// Remove token from localStorage
localStorage.removeItem("jwtToken");
// Remove auth header for future requests
setAuthToken(false);
// Set current user to {} which will set isAuthenticated to false
dispatch(setCurrentUser({}));
};

它看起来不错,但是我会尝试这个:

  1. 每当服务器启动错误时,请确保发出此对象:

    response.json({response: {data: "Error..."}})

  2. 否则检查登录用户函数中的未定义对象:

    payload: ((err||{}).response||{}).data || 'Error unexpected'

    这将在你没有定义的值之前检查你的嵌套对象。

    解决方案选自奥利弗·斯蒂尔博客

最新更新