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