欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > echarts动态切换数据渲染(vue3 + echarts)

echarts动态切换数据渲染(vue3 + echarts)

2025/10/24 8:40:37 来源:https://blog.csdn.net/weixin_47454566/article/details/141962764  浏览:    关键词:echarts动态切换数据渲染(vue3 + echarts)

项目情况用到了vue3+echarts5。初次拿到数据渲染没有问题。需求是:进行数据筛选,图表也要进行相对应的数据切换。

思路

  • echarts数据变换后,图表没进行切换。是因为没办法echarts没办法直接渲染更新后的数据
  • 数据切换后直接再去用init会报错,原因是(你已经渲染过了,已经存在了这个dom元素。所以不允许)
  • 那我们就可以定义一个status。初次为true,代表当前这个echarts还没有init dom元素。然后如果init之后直接把status变为false。之后只需要用到setOption就可以了

解决方法

const myChart1 = ref<any>();
const isDomLoading = ref(true); //echart是否初始化
//获取echart数据
const getChartData = async (payload?: any) => {//可以在这里处理数据if (isDomLoading.value) {myChart1.value = echarts.init(document.getElementById('chartDom'));//如果没数据就初次渲染initChart();//初始化}else{myChart1.value.setOption(initChartData());//如果已经渲染过就setOption更新数据}
}//定义echarts option参数
const initChartData = () => {let option = {xAxis: {type: 'category',data: chartDomData.value,nameTruncate: {maxWidth: 9,ellipsis: '...',},triggerEvent: true,axisLabel: {show: true,interval: 0,width: 80,overflow: 'truncate',ellipsis: '...',},axisLine: {show: false,},axisTick: {show: false,},splitLine: {show: false,},},yAxis: {type: 'value',show: false,axisLine: {//y轴show: false,},axisTick: {//y轴刻度线show: false,},splitLine: {//网格线show: false,},},series: [{data: chartDomData.value,selectedMode: 'single',select: {itemStyle: {borderColor: '#000',borderType: 'dashed',},},type: 'bar',label: {show: true,},},],};return option;
};
//初始化图表
const initChart = () => {myChart1.value.setOption(initChartData());isDomLoading.value = false;
}
 				<divclass="box"id="chartDom"ref="chartDom"></div>

如果理解的不对,可以告诉我。我更改一下。一起进步

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词