当前位置: 首页 > news >正文

vue封装的echarts组件被同一个页面多次引用只显示一个的问题

项目场景:

提示:这里简述项目相关背景:

当封装的Echarts组件在同一页面重复引入时,如何避免数据覆盖的问题。关键在于将组件中的id更改为ref,并在初始化时使用refs来获取元素,从而实现多个Echarts实例的独立。


分析:

提示:这里填写问题的分析:

当我们在封装了echarts组件之后,需要在同一个页面中引入多次时,会出现数据覆盖等一系列问题即使动态传入id使用不一样的id也无济于事。


解决方案:

提示:这里填写该问题的具体解决方案:

1:将我们封装的组件中的id选择器删掉,换成ref

<template><!-- 嵌套环状图 --><div ref="chartsRef"v-if="listData1.length&&listData2.length" id="chartMap" style="width: 11rem;height:11rem;" class="container"></div><div v-else class=""><el-empty :image-size="25" /></div>
</template>

2:初始化时我们将id更换为ref

<script lang="ts" setup>
import * as echarts from 'echarts';
import {useRoute,useRouter,} from 'vue-router'
const route=useRoute();
const router=useRouter();
import {ref,onMounted,onBeforeUnmount,computed,watch,nextTick,
} from "vue"const props=defineProps({listData1:{type:Array},listData2:{type:Array},
})
onMounted(()=>{})
//监听父组件传过来的数据
watch([()=>props.listData1,props.listData2],([newVal1,lodVal1],[newVal2,lodVal2])=>{if(props.listData1.length&&props.listData2.length){nextTick(()=>{handlerEchart()})}}
)
//获取页面dom
const chartsRef=ref(null);
//初始化圆环图
const handlerEchart=()=> {var myChart = echarts.init(chartsRef.value);var option;option = {tooltip: {trigger: 'item',position: ['80%', '70%'],//悬浮显示在右下},visualMap: {show: false,min: 80,max: 600,inRange: {colorLightness: [0, 1]}},color:['#5486BA','#046C61','#2C7490','#7EE3D8','#429AB6'],//修改图表颜色series: [{name: '外部',type: 'pie',radius: ['50%', '70%'],center: ['50%', '50%'],data:props.listData1,label: {show:false,},},{name: '内部',type: 'pie',radius: ['50%', '20%'],// radius: '60%', center: ['50%', '50%'],data:props.listData2,label: {show:false,},},]};option && myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});
}
onBeforeUnmount(()=>{
})
const emit=defineEmits([])onMounted(()=>{console.log()
})
onBeforeUnmount(()=>{console.log()
})
</script>

3:父组件引用

<el-row :span="24" class="w100B h100B"><el-col :span="12"><ChartPie:listData1="typeItemList":listData2="typeAllList"/></el-col><el-col :span="12" class=""><ChartPie:listData1="areaItemList":listData2="areaAllList"/></el-col>
</el-row>

相关文章:

  • Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘xxx’)
  • Win10重装系统 (重生篇:我在华强修电脑)
  • AIGC方案-java实现视频伪动效果
  • SpringBoot + 自建GitLab + Jenkins + CentOS Stream 9 来实现自动化部署
  • 御微半导体面试总结
  • 内存泄漏系列专题分析之二十:camx swap内存泄漏实例分析
  • Jenkins + Docker + Kubernetes(JKD)自动化部署全链路实践
  • 基于OpenCV的图像增强技术:直方图均衡化与自适应直方图均衡化
  • 零基础设计模式——行为型模式 - 备忘录模式
  • LVS 负载均衡详解:四层转发原理与三种经典模式全面解析
  • eureka如何绕过 LVS 的虚拟 IP(VIP),直接注册服务实例的本机真实 IP
  • 我们来学mysql -- 8.4版本记录慢查询
  • Spring MVC扩展与SSM框架整合
  • 传统机器学习与大模型 + Prompt 的对比示例
  • 计算机系统概述(5)
  • 使用Docker申请Let‘s Encrypt证书
  • 谈文件系统
  • AI Agent核心技术深度解析:Function Calling与ReAct对比报告
  • vue3笔记(1)自用
  • 开源、免费、美观的 Vue 后台管理系统模板
  • 黄冈论坛网站有哪些/应用关键词优化
  • 淘宝店做网站建设不能开直通车/企业网站推广方案
  • 银行网站建设/海南百度推广总代理
  • ps做 网站标准尺寸是多少合适/沈阳关键字优化公司
  • 网站设计怎么做链接/图片外链生成工具在线
  • 青岛网站备案/发稿网