【发布时间】:2021-07-09 14:45:30
【问题描述】:
您好,我有一个简单的应用程序,通过使用带有时间间隔的 useEffect 每 3 秒获取一次数据。一切都按需要通过登录控制台购买我看到我的 useEffect 工作了两次,它几乎同时调用了两次 fetchData 函数。我想我的代码中遗漏了一些东西。感谢您的帮助!
useEffect(() => {
const interval = setInterval(() => {
fetchChatData();
}, 3000);
return () => clearInterval(interval);
});
const fetchChatData = () => {
setError(null);
async function fetchData() {
const request = await axios.get(
"https://api.jsonbin.io/v3/b/60e6d8a81f8e4a7f2a",
{
headers: {
"Content-Type": "application/json",
"X-Master-Key":
"$2b$10$OSaM64SeFaeWQMwrro08kuypgEG7Q",
},
}
);
const responseData = await request.data;
chatCtx.setChatData(responseData.record);
}
fetchData();
fetchData().catch((error) => {
setError(error.response.data.message);
});
};
【问题讨论】:
-
如果您的时间间隔与
useState一起存储,那么它是预期的。在useEffect中调用setInterval会导致重绘
标签: reactjs use-effect