每 x 秒使用 React 轮询一次 API

2024-01-01

我必须每隔一两秒监视屏幕上的一些数据更新信息。 我认为使用此实现的方式:

    componentDidMount() {
        this.timer = setInterval(()=> this.getItems(), 1000);
      }
    
      componentWillUnmount() {
        this.timer = null;
      }
    
      getItems() {
        fetch(this.getEndpoint('api url endpoint'))
            .then(result => result.json())
            .then(result => this.setState({ items: result }));
      }

这是正确的方法吗?


好吧,由于您只有一个 API 并且无法控制它以将其更改为使用套接字,因此您唯一的方法就是轮询。

根据您的民意调查,您正在采取正确的做法。但上面的代码中有一个问题。

componentDidMount() {
  this.timer = setInterval(()=> this.getItems(), 1000);
}

componentWillUnmount() {
  this.timer = null; // here...
}

getItems() {
  fetch(this.getEndpoint('api url endpoint'))
    .then(result => result.json())
    .then(result => this.setState({ items: result }));
}

这里的问题是,一旦您的组件卸载,尽管对您存储的间隔的引用this.timer被设定为null,还没有停止。即使组件已卸载,间隔也会继续调用处理程序,并尝试setState在不再存在的组件中。

要正确处理它,请使用clearInterval(this.timer)首先然后设置this.timer = null.

另外,fetch调用是异步的,这可能会导致同样的问题。做了可取消的 https://developers.google.com/web/updates/2017/09/abortable-fetch并取消(如有)fetch是不完整的。

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每 x 秒使用 React 轮询一次 API 的相关文章

  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • 如何在ASP.NET Webform中使用Jquery表单插件?

    我遇到了这个插件 http malsup com jquery form getting started http malsup com jquery form getting started 我想知道如何在 ASP NET WebForm
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 在 React Native 中将 Props 传递到屏幕

    我已经开始学习 React Native 并且一如既往地从创建可重用组件开始 我了解了如何在创建自定义组件时传递和访问 props 我想在 React Native 中创建一个基本屏幕 它具有通用属性 并且我的应用程序中的所有屏幕都可以设置
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 在Unity3d中使用Android陀螺仪,如何将初始相机旋转设置为初始移动设备旋转?

    我想使用Android陀螺仪在Unity3d的标准第一人称控制器上执行头部跟踪 我创建了一个简短的脚本 用于旋转第一人称控制器的父节点和相机子节点 该脚本附在相机上 这个脚本运行得很好 它根据我的移动设备的移动旋转第一人称视图 但是 只有当
  • Django + docker + 周期性命令

    使用 docker docker compose 运行 Django 时 运行定期 计划任务 如 manage py custom command 的最佳实践是什么 FE最常见的情况 manage py 清除会话 https docs dj
  • 在 Laravel Eloquent 中使用“With()”函数获取特定列

    我有两张桌子 User and Post One User可以有很多posts和一个post只属于一个user In my User型号 我有一个hasMany关系 public function post return this gt h
  • 大整数转十六进制

    快速提问 我有一个愚蠢的长BigInteger我想将其作为十六进制字符串写入文件 我知道Java提供了 toString 16 方法可以做到这一点 但我在 C 中找不到等效的方法 我在用着System Numerics BigInteger
  • 使用 XTS 进行 Rbind。如何堆叠而不按索引日期排序

    我正在使用 Quantmod 来生成带有股票信息的 XTS 对象 并且我希望编译 堆叠一堆 XTS 文档来处理代码 将 Rbind 与 XTS 结合使用 我发现它不会将 XTS 堆叠在一起 而是按日期进行合并和排序 x lt xts 1 1
  • 确定表单上是否存在字段

    我有一个从数据库动态创建的表单字段 一系列复选框 因此表单上可能不存在该字段 如果数据库中没有匹配的值 我有一些代码需要根据字段是否存在来执行 并提取所选值 如果存在 不过 我似乎无法让 javascript 承认该字段的存在 这是我尝试过
  • 当应用程序处于打瞌睡模式时,警报管理器触发的 Android 通知不会触发

    我有以下要求 用户需要能够在我的应用程序中安排定期提醒 以便在某个时间触发推送通知exact每天的时间 这是我希望我最终不会提交的问题之一 因为在撰写本文时推荐了类似的问题 然而 一些团队成员花了很多时间浏览 Android 开发人员文档和
  • 使用 Cakephp 3 用户名或电子邮件登录

    我想使用用户名或电子邮件登录 所以我想动态更改 Auth 字段 如何像 Cakehp 2 那样修改 this gt Auth 字段 在 cakephp 2 中你可以这样做 this gt Auth gt authenticate array
  • Java 7 -> Java 8:AES 导致异常:“BadPaddingException:给定的最终块未正确填充”与 BufferedReader 和 ZipStreams 结合使用

    我们使用以下语句实例化密码 Cipher cipher Cipher getInstance AES SecretKeySpec key new SecretKeySpec cipherKey AES 这适用于 java 7 1 7 45
  • 如何从子组件显示应用程序级别的警报

    我想要一些规则或建议来做到这一点 我有一个应用程序级别的警报 我想在我的组件之一发生某些情况时显示该警报 例如 保存信息已成功或失败 另外 如何发送我想要显示的不同文本 有 ViewChild 的等价物吗 感谢您的帮助 我会这样做Obser
  • 从 django list_filter 中删除重复项

    我在 django admin 中对相关对象中的字段使用列表过滤器 class A models Model pass class B models Model fk models ForeignKey A val models CharF
  • 当单元格结果按公式更改时运行宏

    我需要什么 每当单元格 C3 返回与当前不同的值 基于其公式 而不是基于手动键入不同的值 时 我们将要触发的宏称为 MacroRuns 我花了一整天的时间阅读并尝试了关于这个主题的谷歌搜索的前两页上的每个 解决方案 到目前为止 似乎没有什么
  • 使用 cassandra 而不是 memcache?

    我不断地从不同来源查阅那些大型网站正在从 memcache 切换到 cassandra 的文章 由于我有 mySQL 背景 当我试图比较彼此之间的优缺点时 我会有点头疼 你能帮我了解更多这方面的信息吗 替换 memcached 是愚蠢的作为
  • 无法使用 QOAuth2AuthorizationCodeFlow 实现 Google 登录

    问题在于重定向 URI 我不知道将其设置为什么 有谁能够弄清楚这一点吗 我收到错误Qt Creator s输出窗格如下所示 qt networkauth oauth2 Unexpected call qt networkauth reply
  • 在 JNI 代码中抛出异常的最佳方式?

    我想要一种一致且简单的方法来在 JNI 代码中抛出异常 处理链式异常的东西 隐式地来自 env gt ExceptionOccurred 方法 或显式地通过参数 无论哪种方式都很好 并且每次我想要这样做时都可以节省我查找构造函数的时间 以上
  • 如何通过 JavaScript 连接到我的 PHP 程序所在的服务器?

    我正在编写一个 Android 应用程序 并且已经有一个用 HTML 和 PHP 编写的工作程序 使用这两者 他们通过用户在 html 页面上自定义的查找来联系 API 然后将其发送到 PHP 页面 通过自定义搜索联系 API 获取结果 然
  • JavaScript 中的原型和构造函数(简单英语)?

    JavaScript 是世界上最容易被误解的语言 D Crockford 我的问题 用简单的英语描述构造函数和原型 使用原型需要什么 是什么purpose后面使用 原型和构造函数 我的意思是他们提供更多 灵活性 我问这个是因为我一直在使用这
  • Eclipse:无法连接到远程虚拟机。连接被拒绝。 [复制]

    这个问题在这里已经有答案了 当我尝试启动 Eclipse 调试 对于服务器端代码 时 我收到以下错误无法连接到远程虚拟机 连接被拒绝 可能是什么问题 我已经尝试过网络上的大多数解决方案 但都没有解决我的问题 任何人都可以帮助我解决这个问题吗
  • Android Studio 创建一个不包括 jniLibs 的构建变体/类型?

    我有一个使用本机 JNI 库的 Android 应用程序 我把它放入app src main jniLibs armeabi v7a无需任何 gradle 配置 Android studio 很乐意将其捆绑到 APK 中 我有一个要求 即所
  • 每 x 秒使用 React 轮询一次 API

    我必须每隔一两秒监视屏幕上的一些数据更新信息 我认为使用此实现的方式 componentDidMount this timer setInterval gt this getItems 1000 componentWillUnmount t