Pon*_*iav 7 fetch setinterval reactjs react-hooks
我最近使用 React 的钩子从服务器获取数据,但我遇到了钩子的问题。代码看起来是正确的,但看起来 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);
}, [])
Run Code Online (Sandbox Code Playgroud)
您需要在间隔之外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);
}, [])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3973 次 |
| 最近记录: |