echarts学习:将echats实例代理为响应式对象可能带来的风险

1.起源

最近我在学习如何封装echarts组件,我所参考的其中一篇博客中提到了一个“图表无法显示的问题”。

根据其中的介绍,造成此种问题的原因是因为,使用ref接受了echarts实例,使得echarts实例被代理为了响应式对象,进而影响了echarts对内部属性的访问。

2.实验

但遗憾的是,在封装和使用echats的过程中我还没有遇到过类似的问题,因此也无从判断问题的真假 ┓( ´∀` )┏

不过既然如此那我们真不妨来实验一下,在官方的Issue中,有贴出一些相关的问题情境,我选了其中的一个进行测试:

于是我准备了如下的一个带有tooltip提示框的折线堆叠图的配置项,将其传入我刚刚封装的echarts组件中。

const option = ref({title: {text: 'Stacked Line',},tooltip: {trigger: 'axis',},legend: {data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'],},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true,},toolbox: {feature: {saveAsImage: {},},},xAxis: {type: 'category',boundaryGap: false,data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],},yAxis: {type: 'value',},series: [{name: 'Email',type: 'line',stack: 'Total',data: [120, 132, 101, 134, 90, 230, 210],},{name: 'Union Ads',type: 'line',stack: 'Total',data: [220, 182, 191, 234, 290, 330, 310],},{name: 'Video Ads',type: 'line',stack: 'Total',data: [150, 232, 201, 154, 190, 330, 410],},{name: 'Direct',type: 'line',stack: 'Total',data: [320, 332, 301, 334, 390, 330, 320],},{name: 'Search Engine',type: 'line',stack: 'Total',data: [820, 932, 901, 934, 1290, 1330, 1320],},],
})

同时echarts实例依旧使用ref来进行接收

const instance = ref(null)

从下图中可以看到,当鼠标hover到图上时提示框真的没有出现

之后我用浅层式APIshallowRef代替原来的ref接收echarts实例。

const instance = shallowRef(null)

这样提示框就可以正常出现了

3.结论

基于我所看到的官方资料和我实验的结果,可以得出结论:当我们在Vue中将echarts实例代理为响应式对象时,可能会造成一系列的意外问题。

解决方法是(在Vue3中),避免使用refreactive接收echarts实例,应该使用普通变量,或者使用shallowRefshallowReactivemarkRaw等API。

参考资料

Vue3 封装 ECharts 通用组件_vue3如何封装echarts-CSDN博客

FAQ - Apache ECharts

响应式API: 进阶 | Vue.js

[Bug] Vue3 support seems not to behave correctly · Issue #17723 · apache/echarts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用 2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5,将人工智能的发展推向了一个新的高度。…

AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月29日预测第5弹

今天继续基于8883的大底,使用尽可能少的条件进行缩号,同时,同样准备两套方案,一套是我自己的条件进行缩号,另外一套是8883的大底结合2码不定位奖号预测二次缩水来杀号。好了,直接上结果吧~ 首先&…

BUUCTF Crypto RSA详解《1~32》刷题记录

文章目录 一、Crypto1、 一眼就解密2、MD53、Url编码4、看我回旋踢5、摩丝6、password7、变异凯撒8、Quoted-printable9、篱笆墙的影子10、Rabbit11、RSA12、丢失的MD513、Alice与Bob14、大帝的密码武器15、rsarsa16、Windows系统密码17、信息化时代的步伐18、凯撒?…

如何使用视频号下载助手机器人,下载视频号视频

目录 微信视频号版权问题 视频号下载助手机器人如何获取 手机市场基本一年每个品牌商发布的手机就高达10多种,而这些设备中并不支持手机缓存操作,却把市场搞的越来越浑,还不断宣传手机缓存可保存视频,今天教教大家如何使用视频号…

私域加持业务 快消门店运营新玩法

两个月前,某快消品企业的李总急切地联系了纷享销客,希望能找到解决终端门店运营难题的有效方法。 Step1、连接终端门店,导入私域进行深度维系与运营 一、与终端门店建立联系 为了与众多门店老板建立紧密的联系,并将他们转化为企…

sqliteSQL基础

SQL基础 SQLite 数据库简介 SQLite 是一个开源的、 内嵌式的关系型数据库, 第一个版本诞生于 2000 年 5 月, 目前最高版本为 SQLite3。 下载地址: https://www.sqlite.org/download.html 菜鸟教程 : https://www.runoob.com/sqlite/sqlit…

Redis相关详解

什么是 Redis?它主要用来什么✁? Redis,英文全称是 Remote Dictionary Server(远程字典服务),是一个开源✁使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化✁日志型、Key-Value 数据库&#xff…

Elasticsearch 认证模拟题 -2

一、题目 有一个索引 task3,其中有 fielda,fieldb,fieldc,fielde 现要求对 task3 重建索引,重建后的索引新增一个字段 fieldg 其值是fielda,fieldb,fieldc,fielde 的值拼接而成。 …

css :hover的使用

参考未整理 即鼠标移入类名为btn的元素时,她的子元素i样式发生改变 自身的样式也发生改变 ,如果他有更多的子元素也可以这样写

机器学习笔记(1):sklearn是个啥?

sklearn 简介 Sklearn是一个基于Python语言的开源机器学习库。全称Scikit-Learn,是建立在诸如NumPy、SciPy和matplotlib等其他Python库之上,为用户提供了一系列高质量的机器学习算法,其典型特点有: 简单有效的工具进行预测数据分…

自动化安装Nginx

1. 指定版本号和用户; 2. 确定安装目录; 3. 确定安装编译模块; 4. 安装相关依赖; 5. 下载源码包并解压; 6. 编译安装; 7. 文件授权及临时文件清理。 #!/bin/bash# 用户输入的Nginx版本号NGIN…

VMware虚拟机安装Ubuntu-Server版教程(超详细)

目录 1. 下载2. 安装 VMware3. 安装 Ubuntu3.1 新建虚拟机3.2 安装操作系统 4. SSH方式连接操作系统4.1 好用的SSH工具下载:4.2 测试SSH连接 5. 开启root用户登录5.1 设置root用户密码5.2 传统方式切换root用户5.3 直接用root用户登录5.4 SSH启用root用户登录 6. 安…

CV每日论文--2024.5.31

1、X-VILA: Cross-Modality Alignment for Large Language Model 中文标题:X-VILA: 跨模态对齐的大型语言模型 简介:我们提出了X-VILA,这是一种全模态模型,旨在通过整合图像、视频和音频模态来扩展大型语言模型(LLM)的能力。X-VILA通过将模态特定的编码…

Spring Cache自定义序列化解决乱码问题

Spring Cache数据缓存到 Redis中的 value是乱码问题(包含日期格式转换),主要是因为序列化方式导致的。 Spring Cache使用 Redis缓存管理器时,默认 value使用的是 JDK序列化值的方式,所以导致缓存的 value乱码的问题。 …

音视频开发—FFmpeg打开麦克风,采集音频数据

文章目录 1.使用命令行实现采集PCM数据2.使用代码实现3.播放PCM4.PCM转换为WAV 1.使用命令行实现采集PCM数据 确保你的系统有FFmpeg安装。你可以通过在终端运行ffmpeg -version来检查是否已安装。 找出你的麦克风设备名。在Linux中,你可以使用arecord -l命令列出所…

通过强化学习彻底改变大型数据集特征选择

文章目录 一、说明二、强化学习:特征选择的马尔可夫决策问题三、用于使用强化学习进行特征选择的 python 库3.1. 数据预处理3.2. 安装和导入FSRLearning库 四、结论和参考文献 一、说明 了解强化学习如何改变机器学习模型的特征选择。通过实际示例和专用的 Python 库…

【Python】解决Python错误报错:IndexError: tuple index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

ROS2从入门到精通2-1:launch多节点启动与脚本配置

目录 0 专栏介绍1 ROS2的启动脚本优化2 ROS2多节点启动案例2.1 C架构2.2 Python架构 3 其他格式的启动文件3.1 .yaml启动3.2 .xml启动 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的…

采用java18+vue语言+springboot开发的家政上门服务平台源码,(平台管理端+用户端+服务端全套源码)

采用java18vue语言springboot开发的家政上门服务平台源码,(平台管理端用户端服务端全套源码) 家政管理平台系统是运用现代计算机和网络技术,集信息网、服务网为一体,对社区家政需求信息汇集整理、综合处理,…

重生之 SpringBoot3 入门保姆级学习(11、日志的进阶使用)

重生之 SpringBoot3 入门保姆级学习(11、日志的进阶使用) 3.2.4 文件输出3.2.5 日志文档的归档与切割 3.2.4 文件输出 配置 application.properties # 日志文件名 如果不写路径默认就是在项目根路径建立 demo.log 文件 推荐写法 D:\\demo.log 路径 文…