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

【vue3】同个页面引入多个图表组件实现自适应的方法

首先说明,此方案仅针对vue3项目在同一个页面引入了多个图表组件,因为我发现不能框架不同的引入,resize的写法还不同

window.addEventListener("resize", function() {...// 在此处重新调用即可
}

以下是具体写法:

循环渲染多个pie图,减少dom层的代码量

<divclass="chart"v-for="(item, index) in riskSpreadItem":key="item.title"
><Pie:id="`riskSpread${index}`":ref="el => getRiskSpreadRef(el, index)":title="item.title":data="item.data"emptyText="暂无风险"/>
</div>

vue3需要先声明ref变量,才能使用,以下是循环出来的未知变量名或未知ref个数的声明方法

const riskSpreadRefList = ref<HTMLElement[]>([]);
const getRiskSpreadRef = (el, index) => {if (el) {riskSpreadRefList.value[index] = el; }
};

使用节流函数调用浏览器窗口的resize事件,不然改变浏览器窗口,会疯狂调用

const ThrottleResize = Throttle(function () {riskSpreadRefList.value?.forEach((item: any) => {if (!isEmpty(item)) {nextTick(() => {// drawchart是子组件里面写的加载echarts的option的方法item.drawchart();});}});
}, 500);// 记住啊!!window.addEventListener在离开页面的时候一定要移除,不然控制台会报错'attribute' is not define
onBeforeUnmount(() => {window.removeEventListener("resize", ThrottleResize);
});onMounted(() => {handleLoad();window.addEventListener("resize", ThrottleResize);
});
http://www.lryc.cn/news/130773.html

相关文章:

  • 一文了解汽车芯片的分类及用途介绍
  • Linux0.11内核源码解析-truncate.c
  • LED驱动型IC芯片的原理介绍
  • VLAN实验
  • Qt应用开发(基础篇)——高级纯文本窗口 QPlainTextEdit
  • 三维可视化平台有哪些?Sovit3D可视化平台怎么样?
  • Xxl-job安装部署以及SpringBoot集成Xxl-job使用
  • 【【超声波避障小车代码】】
  • TDI(Time Delay Integration)
  • RHCE——一、安装部署及例行性工作
  • 服务器数据库中了360后缀勒索病毒怎么办?360后缀勒索病毒的加密形式
  • 期权就是股指期货吗,哪个好做一点?
  • week32
  • 【数据库】P1 数据库基本常识
  • c语言——计算两个数的乘积
  • 单机模型并行最佳实践
  • 编程练习(3)
  • PyTorch学习笔记(十三)——现有网络模型的使用及修改
  • Python爬虫的scrapy的学习(学习于b站尚硅谷)
  • “深入解析JVM:揭秘Java虚拟机的工作原理“
  • 【数据结构与算法】十大经典排序算法-归并排序
  • 基于深度学习创建-表情符号--附源码
  • .netcore grpc的proto文件字段详解
  • 带你了解建堆的时间复杂度
  • 人工智能原理(6)
  • 单片机模块化编程文件创建流程
  • docker image
  • 力扣75——单调栈
  • Webpack和Parcel详解
  • linux系统服务学习(六)FTP服务学习