首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >React本机的实时数据更新图表

React本机的实时数据更新图表
EN

Stack Overflow用户
提问于 2020-08-28 23:21:10
回答 1查看 1.5K关注 0票数 0

我需要在react本机中创建一个图表,它每隔500米/秒从一个本地模块获取数据(数组整数),并在实时更新中绘制它们,为此我使用了“react本机-svg”,我实际上可以更新图表,但是性能非常慢,并且经常发生崩溃。

数组的结果最多接受1800个结果,然后图形滚动

代码语言:javascript
运行
AI代码解释
复制
...
 const [data, setData] = useState(new Array(1800).fill(0));
...

侦听器中的从本机模块和更新数组中获取数据,我从本机模块传递一个由60个元素组成的数组,因为它每500 m/s需要60个元素(e.values是60个整数的数组)。

代码语言:javascript
运行
AI代码解释
复制
...
setData(state => {
    state.splice(0, 60)
    return [...state, ...e.values]
})
...

图表

代码语言:javascript
运行
AI代码解释
复制
...
    <LineChart
            style={ { flex: 1 } }
            data={data.map(dt => {
                return dt
            })}
            svg={ {
                strokeWidth: 2,
                stroke: '#2171bf',
            } }
            yMin={-5000}
            yMax={10000}
            numberOfTicks={25}
        >
            <CustomGrid belowChart={true} />
     </LineChart>
...

我试过其他图表库,但结果都一样。

抱歉,如果语言不完美的话。

EN

回答 1

Stack Overflow用户

发布于 2021-02-14 18:15:27

在使用我尝试过的所有基于SVG的库Reactive原住民时,我一直在努力提高性能。最近,我决定尝试在WebView中使用几个基于画布的绘图库,并取得了很好的效果。最后,我做了一个简单的包:https://www.npmjs.com/package/@dpwiese/react-native-canvas-charts

如果你不想使用这个包,而是自己做它,它是非常简单的。虽然包源代码可能是最好的资源,但我将总结以下步骤:

  1. 创建一个HTML文件并将其导入您的组件: const = htmlTemplate (“./index.html”); 其中,HTML包含可供选择的图表库的JavaScript。上面的链接包目前支持Chart.js、v3和uPlot。在下面的步骤中,我将展示一个Chart.js配置。
  2. 创建一个参考文件,例如let webref
  3. 创建一个WebViewonLoadEnd,您可以将一些JavaScript注入到WebView中,以配置和创建图表 (webref = r)} source={htmlTemplate} onLoadEnd={() => { addChart(config) } /> 其中addChart看起来类似于: const addChart = config => { webref.injectJavaScript(const el = document.createElement("canvas"); document.body.appendChild(el); window.canvasLine = new Chart(el.getContext('2d'), ${JSON.stringify(config)}););}; config是一个有效的Chart.js配置。
  4. 要更新图表数据,只需注入一些JavaScript来更新数据。在Chart.js的情况下,这看起来是: const setData = dataSets => { if (dataSets) { dataSets.forEach((_,i) => { webref.injectJavaScript(window.canvasLine.config.data.datasets[${i}].data = ${JSON.stringify(dataSets[i])}; window.canvasLine.update(););});};}; 其中dataSets是有效的Chart.js数据集。
  5. 就这样!我只通过https://www.npmjs.com/package/@dpwiese/react-native-canvas-charts包使用了这两个绘图库,但到目前为止性能确实很好,即使所有已传递的图表数据都使用了JSON字符串。我还没有对其进行彻底的量化,但这两个库的性能都比我尝试过的任何基于SVG的库都要好。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63644492

复制
相关文章
创建水平滚动的正确方式【CSS 网格布局】
自从奈飞 Netflix 成为了家喻户晓的名字以来,在移动端中我们一直使用横向布局。水平滚动容器(列表)已经成为了一种常见的布局做法,而不是将东西都堆叠在页面上,这将减少占用小屏幕设备垂直的空间。
Jimmy_is_jimmy
2022/11/22
2.6K0
创建水平滚动的正确方式【CSS 网格布局】
创建可移动的stack小部件
本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完成可拖动功能
玖柒的小窝
2021/10/05
4930
创建可移动的stack小部件
Python中动态创建类的方法
在Python中,类也是作为一种对象存在的,因此可以在运行时动态创建类,这也是Python灵活性的一种体现。
drunkdream
2018/08/02
5.2K5
Python中动态创建类的方法
在Python中,类也是作为一种对象存在的,因此可以在运行时动态创建类,这也是Python灵活性的一种体现。
drunkdream
2018/08/03
3.6K0
WordPress更新失败?正确更新方式——小文’s blog
用WordPress写博客的各位朋友一定遇到过后台面板更新失败的尴尬情况吧!但是有苦于旧版本有漏洞,怎么办? 今天就给大家带来正确的更新方式 升级前的准备: 备份全站,包括数据库,出问题了博主不负责0.0 禁用所有插件再升级 正式开始: 第一步:替换 WordPress 文件 获取最新版本的 WordPress。将其下载或解压到本地机器,也可以直接下载到服务器。 删除旧的wp-includes文件夹和wp-admin文件夹 将新的WordPress文件复制到服务器上,覆盖根目录下的原有文件,除了wp-co
神无月
2018/06/25
6.6K0
python中的热更新或动态加载
遍览网络中关于动态加载模块的文章,发现有两种方法,一种是用守护进程的方法,一种是用python自带的reload函数。
py3study
2020/01/08
1.3K0
Excel小技巧41:在Word中创建对Excel表的动态链接
Office套件之间协作配合非常方便。例如,我们可以在Word中放置一个来自Excel的表,并且可以随着Excel中该表的数据变化而动态更新。这需要在Word中创建一个对Excel表的动态链接,允许Word文档自动获取Excel表的变化并更新数据。
fanjy
2020/07/02
4.3K0
IDEA中创建和启动SpringBoot应用的正确姿势
默认情况下,当IDEA检查到你的项目中有SpringBoot应用时,会提示你开启,如果你没开启,可以用以下方法开启。
macrozheng
2019/09/26
3.3K0
IDEA中创建和启动SpringBoot应用的正确姿势
Android中动态更新ListView
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中。 实现步骤:调用ListView的setOnScrollListener()方法设置滑动监听器,实现OnScrollListener接口的方法,判断当列表滑动到最低端时,加载新的列表项。 其中OnScrollListener接口需要实现如下两个方法: onScroll(AbsListView view, int firstVisibleItem, int
欢醉
2018/01/22
2K0
用于创建树形部件的 jQuery 插件:jsTree
jsTree 是一个基于 jQuery 和 Sarissa 的免费网页树形部件,它设置灵活,并且支持几乎主流的浏览器,如:Internet Explorer 6 +, Mozilla Firefox, Safari 3, Opera 9+, Google Chrome。
Denis
2023/04/14
1K0
VBA中动态数组的定义及创建
大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有大小的数组。当我们事先知道数组的大小,我们可以直接声明为静态数组。固定数组定义方法:DIM 数组名(<下届>TO<上届>)。
用户8870853
2021/07/27
3.5K0
LeetCode 5270. 网格中的最小路径代价(动态规划)
给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。 你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) ,且满足 x < m - 1 ,你可以移动到 (x + 1, 0), (x + 1, 1), ..., (x + 1, n - 1) 中的任何一个单元格。注意: 在最后一行中的单元格不能触发移动。
Michael阿明
2022/06/13
5510
LeetCode 5270. 网格中的最小路径代价(动态规划)
如何在Mac上的软件更新中隐藏MacOS Catalina更新提示
有好多小伙伴不愿意升级到MacOS Catalina,但是电脑上有系统更新的红点,那么怎么去除呢,下面教大家如何在Mac上的软件更新中隐藏MacOS Catalina,Mac取消系统更新的红点。
MAC先森
2019/10/21
5.4K0
常见Linux命令的正确打开姿势 实践笔记 更新中
常见Linux命令的正确打开姿势 实践笔记 更新中 我使用centos7X64最小化安装 CentOS-7-x86_64-Minimal-1708 1.vim: 1.vim中跳到第一行和最后一行 1.底线命令模式 2.命令模式 2.vim中清空内容 1.底线命令模式 2.命令模式 2.解压war包 1.jar 解压 war包,直接解压到当前目录 2.unzip 解压 war包,带参数-d 解压到test目录下 3.解压缩.tar.gz使用 1.压缩 test.java文件为test.tar.gz
cookily
2020/09/11
1.6K0
如何在Oozie中创建有依赖的WorkFlow
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在使用Hue创建WorkFlow时,单个WorkFlow中可以添加多个模块的依赖,使各个模块之间在WorkFlow内产生依赖关系,如果对于一个WorkFlow被其它多个WorkFlow依赖(如:AWorkFlow执行成功后,BWorkFlow和CWorkFlow依赖AWorkFl
Fayson
2018/07/12
6.5K2
Excel小技巧42:创建自动更新的图片数据
可以使用Excel内置的“照相机”功能,来创建自动更新的图片数据。如下图1所示,当工作表单元格区域B2:C6中的数据改变时,右侧文本框中图片的数据会自动更新。
fanjy
2020/07/07
1.2K0
如何在mpvue中正确的引用小程序的原生自定义组件
最近,很多人给我留言,问我说怎么在mpvue项目中引入小程序原生框架中的自定义组件。
一斤代码
2018/09/26
1.8K0
[android] fragment的动态创建
在一个商业软件中,会有很多的界面,如果没一个界面对应一个activity,那么activity会非常的多,清单文件也会非常的乱,谷歌在android3.0以后引入了新的概念叫fragment
唯一Chat
2019/09/10
2.1K0
iOS单例的正确创建
#import "CoolObject.h" @implementation CoolObject +(id)shareInstance { static CoolObject *instance = nil; static dispatch_once_t token; dispatch_once(&token, ^{ // 必须使用super防止循环调用 self和CoolObject一样都会导致循环调用 instance = [[super all
用户6094182
2021/03/05
4430
点击加载更多

相似问题

在android中创建动态网格(如视图)

10

pyqt:动态更新动态创建的小部件的属性

11

更新/刷新动态创建的WxPython小部件

20

Kivy:在更新函数中操纵动态创建的小部件

27

如何在kivy中动态创建小部件?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文