想从后端获取特定值时面对错误做出反应
react facing error when want to get specific value from back-end
我正在尝试从后端获取值,它显示完全正常并获取控制台中的所有属性,但是当我想访问特定值时它显示错误,但有时它工作我有尝试使用 useEffect 依赖项但仍然相同,
错误是:未捕获类型错误:无法读取未定义的属性(读取 'eventName')
示例 JSON 格式:
0:{
eventFeeStudent:“34”
eventName: "新事件"
事件通知日期:“2022-05-23T18:00:00.000Z”
}
这里它工作正常,但是当我想捕获任何特定的密钥对时,比如 eventName,我收到错误消息。
const EventEditNavbar = () => {
const { user } = useAuth();
const [userInfo, setUserInfo] = useState({});
console.log(userInfo);
console.log(user);
// console.log(userInfo[0].eventName);
const eventName = userInfo[0].eventName;
useEffect(() => {
if (!user || !user.email) return
const uri = `http://localhost:5000/findevents/?userEmail=${user.email}`;
fetch(uri)
.then((res) => res.json())
.then((data) => setUserInfo(data));
}, [user]);
return (
<Container>
<div className="eventEdit_nav">
<div className="eventEdit_nav_right">
<Link to={`/festivals/${eventName}`}>View</Link>
<Link to="/">Edit</Link>
<Link to="">Manage</Link>
<Link to="">Marketing</Link>
</div>
<div className="eventEdit_nav_left">
<Link to="">Save</Link>
<Link to="">List Event</Link>
</div>
</div>
</Container>
);
};
export default EventEditNavbar;
请记住,每当对象的 属性 正在 undefined
访问其子项时,将引发未捕获的错误,这意味着未定义的 属性.
下没有任何内容
在你的例子中,你是用一个空对象 ({}
) 启动 userInfo
,所以首先是 userInfo[0]
(当没有从server) 将是 undefined
并且当您尝试访问它的子节点时它会抛出错误。要解决这个问题,您可以使用 optional chaining,每当您尝试这样的事情时。
这样做可以解决您的问题:
const eventName = userInfo[0]?.eventName;
/* Whenever userInfo is undefined the eventName will
be set to undefined as well and it will prevent the
application from throwing an error when you try to
access userInfo child */
我正在尝试从后端获取值,它显示完全正常并获取控制台中的所有属性,但是当我想访问特定值时它显示错误,但有时它工作我有尝试使用 useEffect 依赖项但仍然相同, 错误是:未捕获类型错误:无法读取未定义的属性(读取 'eventName') 示例 JSON 格式:
0:{ eventFeeStudent:“34” eventName: "新事件" 事件通知日期:“2022-05-23T18:00:00.000Z” }
这里它工作正常,但是当我想捕获任何特定的密钥对时,比如 eventName,我收到错误消息。
const EventEditNavbar = () => {
const { user } = useAuth();
const [userInfo, setUserInfo] = useState({});
console.log(userInfo);
console.log(user);
// console.log(userInfo[0].eventName);
const eventName = userInfo[0].eventName;
useEffect(() => {
if (!user || !user.email) return
const uri = `http://localhost:5000/findevents/?userEmail=${user.email}`;
fetch(uri)
.then((res) => res.json())
.then((data) => setUserInfo(data));
}, [user]);
return (
<Container>
<div className="eventEdit_nav">
<div className="eventEdit_nav_right">
<Link to={`/festivals/${eventName}`}>View</Link>
<Link to="/">Edit</Link>
<Link to="">Manage</Link>
<Link to="">Marketing</Link>
</div>
<div className="eventEdit_nav_left">
<Link to="">Save</Link>
<Link to="">List Event</Link>
</div>
</div>
</Container>
);
};
export default EventEditNavbar;
请记住,每当对象的 属性 正在 undefined
访问其子项时,将引发未捕获的错误,这意味着未定义的 属性.
在你的例子中,你是用一个空对象 ({}
) 启动 userInfo
,所以首先是 userInfo[0]
(当没有从server) 将是 undefined
并且当您尝试访问它的子节点时它会抛出错误。要解决这个问题,您可以使用 optional chaining,每当您尝试这样的事情时。
这样做可以解决您的问题:
const eventName = userInfo[0]?.eventName;
/* Whenever userInfo is undefined the eventName will
be set to undefined as well and it will prevent the
application from throwing an error when you try to
access userInfo child */