2 回答
TA贡献1797条经验 获得超4个赞
有几件事你需要重构
您的 React Hook useEffect 具有依赖项orders,它将无限次重新渲染
.then 在 await 没有任何意义之后,要么摆脱 async / await 要么包括承诺回调
const getUserOrders = () => {
API.getOrders(window.sessionStorage.id)
.then(res => setOrders(res.data.ordersArr))
.catch(err => console.log(err));
}
useEffect(() => {
if (logged_in) {
getUserOrders();
} else {
window.location.href = "/login";
}
}, [])
TA贡献1862条经验 获得超7个赞
useEffect每次orders状态更改时,您的钩子都会重新运行,当您的useEffect钩子运行时,您从 API 获取数据,然后设置orders. 这反过来又会触发具有新值的渲染,orders从而使useEffect调用无效并使其再次触发,最终导致无限循环。
您只想useEffect通过传递一个空的依赖项列表来强制运行一次useEffect(..., [])
添加回答
举报
