我有一个名为 fetchData 的函数。它的目的是根据 api 端点参数检索数据并根据间隔参数更新该数据。
import { useState, useEffect } from 'react';
export const fetchData = (endpoint, interval) => {
const [jsonData, setJsonData] = useState(null);
useEffect(() => {
const innerFetchData = async () => {
fetch(endpoint, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
})
.then((res) => res.json())
.then((data) => data)
.then((moreData) => setJsonData(moreData))
.catch((e) => console.error(e));
};
innerFetchData();
const timer = setInterval(() => {
innerFetchData();
}, interval);
return () => clearInterval(timer);
}, []);
return jsonData;
};
我正在导入它并在我的一个反应组件中使用它
const data = fetchData('/api/CustomerWorkspace', 5000);
出了问题的是我认为它没有正确读取间隔参数,当我运行它时,它可能每秒无限调用 api 50 次。如果我在 fetchData 内部的计时器上硬编码间隔时间,它可以正常工作。你能帮我弄清楚如何传递一个区间变量,以便我可以在不同的组件中重用 fetchData 吗?谢谢你。