Vue多页面使用同一个echarts,只会出现一个

本文介绍了当使用ECharts创建多个图表时出现ID冲突的问题及解决方法。提供了两种实用方案:一是利用Vue的ref特性直接获取DOM元素;二是为每个图表动态绑定唯一ID,确保每个图表的独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因分析

首先echarts的创建方式,是通过获取元素的id初始化echarts实例,所以在渲染时,两个元素的id相同只会出现一个echarts图表

<div id="block2-1" style="width: 100%;height: 100%;"></div>
const charts = echarts.init(document.getElementById('block2-1'));
解决办法
1、通过vue的ref去获取元素
<div ref="block2_1" style="width:300px; height: 300px;"></div>
const charts = echarts.init(this.$refs.block2_1)

使用ref我们就不需要获取DOM结点了。$ref如果注册在元素上,它指向的就是DOM元素,如果注册在组件上,他指向的就是组件的实例。

2、动态绑定id

因为两个相同的id所以会覆盖,故我们设置不同的id即可。
关于id的设置,我们可以使用父组件传过来的不同的值,也可以写个不重复的随机数进行赋值,主要是能保证两个组件id不同就行

<div :id="this.elementId" style="width:300px; height: 300px;"></div>
const charts = echarts.init(document.getElementById(this.elementId))

通过以上两种方法就可以解决这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值