jer*_*iff 0 scheduled-tasks reactjs react-hooks
我有一个 React 组件,它从 Flask 后端提供的 url 获取数据,并使用该数据显示折线图。我想刷新前端的图表,而无需用户手动刷新页面。
代码是:
function Graph() {
const [graphData, setGraphData] = useState([]);
useEffect(() => {
fetchGraphData();
}, []);
const fetchGraphData = async () => {
const result = await fetch("url")
const fetchedGraphData = await result.json();
if(res.ok) {
setGraphData(fetchedGraphData);
}
};
return (
<div>
<Container>
<LineChart>
....
</LineChart>
</Container>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
我尝试在任何地方以及我能想到的任何方式使用setIntervaland setTimeout,但我根本无法让它工作。
我认为这setTimeout应该更好,因为它可以保证在再次执行之前等待服务器响应,而不是setInterval在出现延迟时对查询进行排队。
小智 5
只需一个计时器即可实现该目标。
在你useEffect尝试写这个:
useEffect(() => {
const interval = setInterval(() => {
fetchGraphData();
},60*1000);
return () => clearInterval(interval);
}, []);
Run Code Online (Sandbox Code Playgroud)
作为回报,所有只是一个清理函数,以确保卸载组件后没有计时器运行。要了解有关清理功能的更多信息https://reactjs.org/docs/hooks-effect.html#example-using-hooks-1
| 归档时间: |
|
| 查看次数: |
3895 次 |
| 最近记录: |