gpt4 book ai didi

javascript - 将 axios 响应保存到状态 react Hook

转载 作者:行者123 更新时间:2023-11-30 13:48:26 24 4
gpt4 key购买 nike

我正在尝试使用 Hook 将从 Axios 获得的响应保存到状态。但是,每当我尝试使用 Hook 时,组件都会继续重新渲染无限次。

const [orders, setOrders] = useState([]);

const getUserOrders = async () => {
await 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";
}
}, [orders])

如果我控制台日志 res.data.ordersArr 而不是使用 setOrders Hook ,我能够看到预期的数据。当我使用钩子(Hook)时,它会不断重新渲染。

最佳答案

有几件事需要重构

  1. 您的 React Hook useEffect 具有依赖项 orders,它将无限次地重新渲染
  2. .then 在 await 之后没有任何意义,要么摆脱 async/await 要么包括 promise 回调

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";
}
}, [])

关于javascript - 将 axios 响应保存到状态 react Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58809970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com