react+datav+echarts实现可视化数据大屏
📓最近有点闲,就学习了下react,没想到就把react学完了,觉得还不错,就打算出一把react+datav的简易版可视化数据大屏供大家做个参考。
📓效果如下

1下载必要的框架
📓 react路由
npm install react-router-dom --save
📓 datav框架
npm install @jiaminghi/data-view-react --save
📓 echarts
npm install echarts --save
2,路由设计
📓在路由上,我是绑定一个index的路由作为组件,然后在index添加自适应的全局容器,当容器设置完成后,就在就在将其他的小的模块给一个个导入进来,
2.1 在src文件夹下新建文件夹index,index里面新建文件index.jsx

2.2 index.jsx里的代码内容如下
import React, { lazy } from "react";
import style from "../style.module.css"
import { FullScreenContainer, BorderBox11 } from "@jiaminghi/data-view-react";export default function index() {return (<FullScreenContainer > //我是datav的全局容器组件,自适应组件我是最外层的容器</FullScreenContainer>);
}
2.3 在app.js里,将index组件绑定我们的路由,这里要注意下 我用的路由是6版本 和5版本有点区别,这里我定义了一个根路由,然后重定向到index路由,index路由绑定我们的Index组件。
import React, { lazy, Suspense } from "react";
import { Route, Routes, Navigate } from "react-router-dom";
const Index = lazy(() => import("./index/index.jsx"));
export default function App() {return (<div><Suspense><Routes><Route path="/" element={<Navigate to="/index" />}></Route><Route path="/index" element={<Index />}></Route></Routes></Suspense></div>);
}
2.4 查看效果

📓当出现该内容时,就代表着我们的基础架构已经搭建好 后续我们就要进行分块了
3.大屏分块
📓我们在index.jsx里进行区域分块,代码如下
import React, { lazy } from "react";
import style from "../style.module.css"
import { FullScreenContainer, BorderBox11 } from "@jiaminghi/data-view-react";
export default function index() {return (<FullScreenContainer class={style.box}><BorderBox11 title="香蕉麻花皮测试" class={style.boxa}><div className={style.box1}><div><div className={style.box2}></div><div className={style.box2}></div><div className={style.box2}></div></div><div><div className={style.box2}></div><div className={style.box3}></div></div><div><div className={style.box2}></div><div className={style.box2}></div><div className={style.box2}></div></div></div></BorderBox11></FullScreenContainer>);
}
📓效果如下

4.当根据我们的思路进行分块后,后续我们就要进行对主容器的内容进行填充了
4.1 我们创建 8个单独组件,这里我以home1 -- 8 来进行命名,

📓 在每个文件夹里新建一个index.jsx的文件

5.在小表格中使用echarts图表,并且渲染到主界面上
📓我们需要在表格中渲染echarts,并且通过组件引入的方式把他加入到index的主容器当中
📓小表格的代码如下
import React, { useState, useRef, useEffect } from "react";
import { BorderBox12 } from "@jiaminghi/data-view-react";
import * as echarts from "echarts";
import style from "../style.module.css";
export default function Indexdata() {const chartsNode = useRef(null);const [xdata,setxdata]= useState(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"])const [ydata,setydata]= useState([150, 230, 224, 218, 135, 147, 260])const mydata = () => {var myChart = echarts.init(chartsNode.current);var option;option = {xAxis: {type: "category",data: xdata,},yAxis: {type: "value",},series: [{data: ydata,type: "bar",},],};option && myChart.setOption(option);};useEffect(() => {mydata();});return (<BorderBox12 class={style.boxc}><div ref={chartsNode} className={style.boxc}></div></BorderBox12>);
}
📓引入到主体容器当众,并渲染到页面上

📓效果如下

📓我们在把其他的依次引入,代码如下:
import React, { lazy } from "react";
import style from "../style.module.css"
import { FullScreenContainer, BorderBox11 } from "@jiaminghi/data-view-react";
const Home1 = lazy(() => import("../home1/IndexData"));
const Home2 = lazy(() => import("../home2/index"));
const Home3 = lazy(() => import("../home3/index"));
const Home4 = lazy(() => import("../home4/index"));
const Home5 = lazy(() => import("../home5/index"));
const Home6 = lazy(() => import("../home6/IndexData"));
const Home7 = lazy(() => import("../home7/index"));
const Home8 = lazy(() => import("../home8/Index"));
export default function index() {return (<FullScreenContainer class={style.box}><BorderBox11 title="香蕉麻花皮测试" class={style.boxa}><div className={style.box1}><div><div className={style.box2}><Home1 /></div><div className={style.box2}><Home2 /></div><div className={style.box2}><Home3 /></div></div><div><div className={style.box2}><Home4 /></div><div className={style.box3}><Home8 /></div></div><div><div className={style.box2}><Home5 /></div><div className={style.box2}><Home6 /></div><div className={style.box2}><Home7 /></div></div></div></BorderBox11></FullScreenContainer>);
}
📓效果图

react的大屏开发还是挺简单的,和vue开发设计思路差不多,就框架的实现代码不一样,最后 贴出源码:
git@gitee.com:hu-wenwu/react-datav-echarts-view.git
相关文章:
react+datav+echarts实现可视化数据大屏
📓最近有点闲,就学习了下react,没想到就把react学完了,觉得还不错,就打算出一把reactdatav的简易版可视化数据大屏供大家做个参考。 📓效果如下 1下载必要的框架 📓 react路由 npm install re…...
CSS新手入门笔记整理:CSS浮动布局
文档流概述 正常文档流 “文档流”指元素在页面中出现的先后顺序。正常文档流,又称为“普通文档流”或“普通流”,也就是W3C标准所说的“normal flow”。正常文档流,将一个页面从上到下分为一行一行,其中块元素独占一行…...
微服务组件Sentinel的学习(1)
Sentinel学习笔记(1) Sentinel基本概念Sentinel功能和设计理念流量控制熔断降级系统负载保护 Sentinel基本概念 资源 资源是Sentinel的关键概念。它可以是 ava应用程序中的任何内容,例如,由应用程序提供的服务,或由应…...
小程序 -网络请求post/get
1.1网络请求的概念(post和get) 1.2步骤 1.3 应用函数 js里面写,用bindtap绑在控件上,就不讲了 实例代码: //发起get数据请求get_info(){wx.request({url:https://www.escook.cn/api/get,//请求的接口地址,必须基于https协议//请求的方式met…...
Elasticsearch 8.10之前同义词最佳实践
1、同义词在搜索引擎领域用途 同义词在搜索引擎领域的用途可概括如下: 增强搜索的准确性——当用户输入一个关键词时,可能与他们实际意图相关的文档使用了一个不同的关键词或短语。同义词允许搜索引擎理解和识别这些情况,返回更准确的结果。如:“遥遥领先”和“华为Meta60…...
芯知识 | 什么是OTP语音芯片?唯创知音WTN6xxx系列:低成本智能语音解决方案
什么是OTP语音芯片? OTP,即一次性可编程(One-Time Programmable),语音芯片是一类具有独特编程特性的嵌入式语音存储解决方案。与可重复擦写(Flash型)语音芯片不同,OTP语音芯片一经烧…...
Linux内核密钥环
Linux内核密钥环(Linux Kernel Keyring)是Linux内核中的一个机制,用于管理和存储各种类型的密钥和安全相关的数据。它是Linux内核提供的一种可编程的安全子系统,用于处理密钥的生成、存储、检索和删除等操作。 Linux内核密钥环的…...
web前端之正弦波浪动功能、repeat、calc
MENU 效果图htmlstylecalcrepeat 效果图 html <div class"grid"><span class"line"></span><span class"line"></span><span class"line"></span><span class"line"><…...
使用工具 NVM来管理不同版本的 Node.js启动vue项目
使用工具如 NVM(Node Version Manager)来管理不同版本的 Node.js。NVM 允许你在同一台计算机上安装和切换不同版本的 Node.js。以下是一些步骤,以便同时在你的系统中安装两个 Node.js 版本: 安装 NVM: 首先,你需要安装…...
Xcode编写基于C++的动态连接库(dylib)且用node-ffi-napi测试
创建一个dylib工程示例 在 Xcode 中创建一个动态链接库(.dylib 文件)的步骤如下: 打开 Xcode: 打开 Xcode 应用程序。 创建新的工程: 选择 "Create a new Xcode project",或者使用菜单 File &g…...
WPF-UI HandyControl 简单介绍
文章目录 前言我的网易云专栏和Gitee仓库HandyControlHandyControl示例相关资源地址 我的运行环境快速开始和Material Design功能对比手风琴右键菜单自动补充滚动条轮播图消息通知步骤条托盘按钮 结尾 前言 最近我在研究如何使用WPF做一个比较完整的项目,然后我就先…...
golang学习笔记——数据结构进阶
文章目录 数据结构进阶mapmap示例sliceinterfaceembedded 数据结构进阶 常见数据结构实现原理 本章主要介绍常见的数据结构,比如channel、slice、map等,通过对其底层实现原理的分析,来加深认识,以此避免一些使用过程中的误区。 …...
TrustZone之总线请求
接下来,我们将查看系统中的总线请求者,如下图所示: 系统中的A型处理器具有TrustZone感知,并在每个总线访问中发送正确的安全状态。然而,大多数现代SoC还包含非处理器总线请求者,例如GPU和DMA控制器。 与完成…...
vue2+Echarts数据可视化 【帕累托图】
接口得到的数据如下 要经过排序 ,计算累计百分比得到数据 蓝色 柱状图数据: 取count字段值 横坐标:取 id值 折线图:根据柱状图的数据计算累计百分比 getInterface(data) {getParetoChart(data).then((res) > {if (res) {thi…...
imazing 2.17.16中文版怎么备份iPhone手机照片
imazing 2.17.16中文版备份功能非常强大,在进行备份之前,需要对其进行设置,才能充分使用备份功能。当移动设备与电脑第一次连接成功后,会询问是否要立即备份,个人的建议是选择“稍后”,小伙伴可以先对软件进…...
05 python数据容器
5.1 数据容器认识 5.2 python列表 5.2.1 列表的定义 演示数据容器之:list 语法:[元素,元素,....] #定义一个列表List List [itheima,uityu,gsdfg] List1 [itheima,6666,True] print(List) print(List1) print(type(List)) pr…...
相机倾斜棋盘格标定全记录 vs200+opencv安装
论文参考是这个 Geiger A, Moosmann F, Car , et al. Automatic camera and range sensor calibration using a single shot[C]//Robotics and Automation (ICRA), 2012 IEEE International Conference on. IEEE, 2012: 3936-3943. 代码是这个github 花了一上午配好了c环境。。…...
QT- QT-lximagerEidtor图片编辑器
QT- QT-lximagerEidtor图片编辑器 一、演示效果二、关键程序三、下载链接 功能如下: 1、缩放、旋转、翻转和调整图像大小 2、幻灯片 3、缩略图栏(左、上或下);不同的缩略图大小 4、Exif数据栏 5、内联图像重命名 6、自定义快捷方式…...
PyQt 如何通过连续点击托盘图标显示隐藏主窗口并且在主窗口隐藏时调整界面到托盘图标附近
不废话直接看代码 # -*- codingutf-8 -*- # # author: Ruben # mail: 773849069qq.com # time: 2023/12/8 # u""" 一个托盘图标的小部件 """ from Qt import QtWidgets, QtGui, QtCore# --*--*--*--*--*--*--*--*--*--…...
什么是纯净IP?如何判断IP地址的纯净度?有哪些干净IP推荐?
您是否想知道什么使代理“干净”或如何确保您的代理不会将您列入网站的黑名单?对于通过代理访问网络的人来说,干净的代理是无缝在线体验的重要组成部分。在这篇文章中,我们将深入研究干净代理的世界,并探讨决定其质量的因素。 一、…...
AI智能体操作安卓设备:基于agent-droid-bridge的自动化实践
1. 项目概述:连接AI与安卓设备的桥梁 最近在折腾AI智能体(Agent)和自动化流程时,遇到了一个挺有意思的需求:如何让运行在服务器上的AI程序,直接去操作一台真实的安卓手机或模拟器,完成一些复杂的…...
STM32F407最小系统板DIY全记录:从原理图绘制到PCB打样,手把手带你复刻一块自己的核心板
STM32F407最小系统板DIY全记录:从原理图绘制到PCB打样,手把手带你复刻一块自己的核心板 1. 项目规划与芯片选型 在开始动手之前,我们需要明确几个关键问题:为什么要选择STM32F407?这个芯片适合哪些应用场景?…...
Hermes Agent 连接 Taotoken 自定义供应商,完成环境变量配置
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent 连接 Taotoken 自定义供应商,完成环境变量配置 基础教程类,指导用户在使用 Hermes Agent 时&…...
FMCW雷达干扰抑制:分数傅里叶变换的工程实践
1. FMCW雷达干扰问题与分数傅里叶变换的机遇在79GHz频段工作的车载FMCW雷达,其线性调频连续波(LFM)信号极易受到同频段其他雷达设备的干扰。这种干扰会导致雷达检测性能显著下降——实测数据显示,强干扰环境下目标检测的虚警率可能…...
小智聊天机器人的本地化部署。
前天到了,小智机器人ESP32-S2的套件(非焊接版的那一款),找王同学,学了学怎么焊接。昨天,使用面包板搭建电路,安装元器件,服务器端注册设置,刷程序,很快就完成…...
Spring Kafka监听多个Topic时,如何避免消费者‘摸鱼’?聊聊Range和RoundRobin分配策略的选择
Spring Kafka多Topic监听场景下消费者分配策略深度优化 1. 问题背景:当消费者开始"摸鱼" 在分布式消息系统中,Kafka凭借其高吞吐、低延迟的特性成为众多企业的首选。然而在实际开发中,不少团队遇到过这样的尴尬场景:明明…...
当你的Android手机频繁闪退时,系统在后台悄悄做了什么?—— 深入Rescue Party机制
当你的Android手机频繁闪退时,系统在后台悄悄做了什么?—— 深入Rescue Party机制 每次点击应用图标却遭遇闪退时,用户看到的只是瞬间消失的界面,而Android系统内部正上演着一场精密的多线程救援行动。这种看似简单的崩溃背后&…...
RK3588 NPU部署YOLOv8全流程:从ONNX转换到板端C++/Python推理优化
1. 项目概述:为什么要在RK3588上部署YOLOv8?最近在边缘计算项目里,我遇到了一个典型的需求:客户需要在本地设备上实时分析摄像头画面,识别特定物体并分割出它们的轮廓,同时要求设备功耗低、体积小、成本可控…...
告别卡顿与错帧:Glide + WebPDecoder库优化WebP动图播放的完整实践
Glide WebPDecoder库深度优化:解决WebP动图播放三大核心难题 在移动应用开发中,动态图像的流畅播放直接影响用户体验。WebP格式因其优秀的压缩率和动画支持,正逐渐成为替代GIF的首选方案。然而,Android平台上使用Glide加载WebP动…...
Linux网络运维实战:从ifconfig、ethtool到网络状态深度诊断
1. 从ifconfig开始:你的网络诊断第一课 刚接手一台Linux服务器时,我习惯性敲下的第一个命令永远是ifconfig。这个看似简单的命令就像汽车仪表盘,能快速告诉你当前网络接口的基本状态。记得有次凌晨处理线上故障,就是通过ifconfig…...
