gpt4 book ai didi

reactjs - Fetch 和 setInterval react 钩子(Hook)问题

转载 作者:行者123 更新时间:2023-12-04 15:17:05 24 4
gpt4 key购买 nike

我最近使用带有 React 的钩子(Hook)从服务器获取数据,但我遇到了钩子(Hook)问题。代码看起来是正确的,但看起来 useEffect 不是第一次调用,而是在使用 setInterval 3 秒后调用。在它出现之前,我有 3 秒钟的空白表格。我想直接显示数据,3秒后调用。
使用它的正确方法是什么?

const [datas, setDatas] = useState([] as any);

useEffect(() => {
const id = setInterval(() => {
const fetchData = async () => {
try {
const res = await fetch(URL);
const json = await res.json();
setDatas(jsonData(json));
} catch (error) {
console.log(error);
}
};
fetchData();
}, TIME)

return () => clearInterval(id);
}, [])

最佳答案

您需要调用 fetchData一旦最初超出区间。定义 fetchData区间之外。

useEffect(() => {
// (1) define within effect callback scope
const fetchData = async () => {
try {
const res = await fetch(URL);
const json = await res.json();
setDatas(jsonData(json));
} catch (error) {
console.log(error);
}
};

const id = setInterval(() => {
fetchData(); // <-- (3) invoke in interval callback
}, TIME);

fetchData(); // <-- (2) invoke on mount

return () => clearInterval(id);
}, [])

关于reactjs - Fetch 和 setInterval react 钩子(Hook)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64144497/

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