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(..., [])
添加回答
舉報