javascript - 如何以更高效且错误更少的方式获取实时 json 数据?
问题描述
我正在尝试从我的反应应用程序上的服务器获取实时 JSON 数据。我写的代码很少工作,不断地无法获取,而且它向服务器创建了太多的请求,这使得浏览器真的很慢。如何以更有效且错误更少的方式获取实时数据?提前致谢。
我使用 Fetch API 和 setInterval 向服务器请求数据,并使用反应挂钩来更新数据。但它做的请求比我想象的要多,而且还出现了速度问题。
const [state, setState] = React.useState(0)
const devicePos = function () {
fetch('http://192.168.10.233:34599/')
.then(response => response.json())
.then(response => {
setState(response[0].x)
console.log(response[0].x)
})
.catch(error => {
console.log(error);
});
}
setInterval(function(){
devicePos()
}, 500);
我希望实时数据更新更快。
解决方案
而不是把它放在 setInterval 中,异步代码应该放在 useEffect 挂钩中。在反应中,您需要在生命周期方法中进行异步调用,因为它们具有副作用,正如您可能已经经历过的那样。useEffect 挂钩类似于类中的 componentDidMount。不同之处在于它包含更多内容,这意味着它可以处理所有三种生命周期方法,componentDidMount, componentDidUpdate, componentWillUnmount
useEffect(() => {
devicePos();
}, []);
推荐阅读
- java - 在多个项目上剥离 publishabe 密钥
- oracle - Oracle:Sqlldr 使用“截断到表”ctl 文件引发错误
- session - 会话的 Sagemaker Studio UnkownServiceError
- python - 在 python 中使用 Ortools 解决最小化问题
- python - 子数组中的启发式算法
- android - Android、Xamarin 和 Prism 如何使用带按钮的物理键盘?
- r - 设置种子,样本种类参数会引发警告
- javascript - load() 事件有问题
- c++ - 在 Visual Studio 2019 中将布尔变量作为参数传递给需要 BOOL 参数的函数
- sql-server - 如何使用实体框架中的脚本代码在 SQL Server 中创建表?