Echarts子组件封装以及多个Echarts子组件随窗口变化而变化!

news/2024/11/30 6:53:50/

1、目标效果

        源码在下方,复制并npm install echarts 便可运行

        将echarts封装成子组件,传入对应的option即可展示数据报表!

        

        随着窗口大小变化而改变数据报表大小!

                                                                        全屏

 ​

                                                            缩小窗口情况下 

  

2、封装echarts子组件

echarts使用三部曲:

(1)容器实例:        echart.init(document.getElementById(this.id));

(2)容器宽高                

(3)option配置         echart.setOption()

 

因此这三个就可以是父组件传给子组件的值,

 props: {id: {type: String,default: ''},options: {type: Object,default: {}},height: {type: Number,default: 300}},

        在mounted中创建实例

mounted() {// 创建echarts实例并设置配置this.echarts = echart.init(document.getElementById(this.id));this.echarts.setOption(this.options);
}

        在beforeDestroy中销毁实例

    beforeDestroy() {// 销毁echarts实例this.echarts = null},

3、多个echarts子组件随窗口变化而变化

(1)窗口大小变化触发事件 

window.addEventListener('resize', () => {// 调用子组件resetEcharts()
})

(2)echarts自身携带resize()实现自适应窗口大小变化

  子组件

import * as echart from 'echarts';
export default {methods: {// 重置echartsresetEcharts() {echart.init(document.getElementById(this.id)).resize();}}
}

4、源码

   /components/Echarts.vue

<template><div :id="id" :style="{ 'height': height + 'px' }"></div>
</template><script>
import * as echart from 'echarts';
export default {props: {id: {type: String,default: ''},options: {type: Object,default: {}},height: {type: Number,default: 300}},data() {return {echarts: null}},mounted() {// 创建echarts实例并设置配置this.echarts = echart.init(document.getElementById(this.id));this.echarts.setOption(this.options);},beforeDestroy() {// 销毁echarts实例this.echarts = null},methods: {// 重置echartsresetEcharts() {echart.init(document.getElementById(this.id)).resize();}}
}
</script><style scoped></style>

App.vue

<template><div id="app"><!-- 柱状图 --><div><Echarts id="bar" :options="barOptiton" ref="barEchart"></Echarts></div><!-- 折线图 --><div><Echarts id="line" :options="lineOption" ref="lineEchart"></Echarts></div></div>
</template><script>
import Echarts from '@/components/Echarts'
export default {name: 'App',components: {Echarts},data() {return {lineOption: {title: {text: 'ECharts 折线图'},tooltip: {},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'line',data: [5, 20, 36, 10, 10, 20]}]},barOptiton: {title: {text: 'ECharts 柱状图'},tooltip: {},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]}}},mounted() {// 随窗口大小变化window.addEventListener('resize', () => {this.$refs.barEchart.resetEcharts()this.$refs.lineEchart.resetEcharts()})}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;
}
</style>


http://www.ppmy.cn/news/41634.html

相关文章

uni-app--》如何实现网上购物小程序(上)?

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;uni-app &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&#xf…

阿里通义千问、ChatGPT和文心一言有何区别,在哪里能使用?

目前&#xff0c;聊天机器人技术在人工智能领域的发展越来越成熟了。现在已经有几款备受关注的聊天机器人产品问世&#xff0c;例如ChatGPT、阿里的通义千问和百度的文心一言。它们有什么区别&#xff0c;怎么使用呢&#xff1f; 其实&#xff0c;我也挺好奇的&#xff0c;毕竟…

谈一谈Java的ThreadLocal

目录 先说原理&#xff1a; 再上代码&#xff1a; 运行结果&#xff1a; 先说原理&#xff1a; ThreadLocal 是一个本地线程副本变量工具类&#xff0c;它可以在每个线程中创建一个副本变量&#xff0c;每个线程可以独立地修改自己的副本变量&#xff0c;而不会影响其他线程…

【逻辑书单】①《一本小小的蓝色逻辑书》50条核心法则梳理(10~19)

基础性、工具性、全人类性都是逻辑学的性质&#xff0c;而全人类性即意味着没有阶级性&#xff0c;人们的国籍不同、民族不同、地位不同、语言不同&#xff0c;但思维的形式&#xff0c;即概念、判断、推理的形式是相同的。我想&#xff0c;接触逻辑学总让人觉得一个人的视角可…

CRCC铁路浪涌保护器的应用解决方案

铁路浪涌保护器是一种专业产品&#xff0c;主要用于保护铁路系统中的电气设备免受浪涌电压的损害。CRCC铁路认证是铁路领域的权威认证机构之一&#xff0c;其认证标准被广泛认可&#xff0c;选择CRCC认证的铁路浪涌保护器可以保证其质量和可靠性。 铁路浪涌保护器的主要作用是…

NestJs使用MySQL创建多个实体

如果小伙伴还不会使用nestjs连接数据库的话 可以看我的上一篇文章 NestJs使用连接mysql企业级开发规范 关系 关系是指两个或多个表之间的联系。关系基于每个表中的常规字段&#xff0c;通常包含主键和外键。关系有三种&#xff1a; 名称说明一对一主表中的每一行在外部表中有…

什么时候需要网管型工业交换机

交换机型号选择时&#xff0c;经常会有疑问&#xff1a;是选非网管型工业交换机或是选网管型工业交换机&#xff0c;网管型工业交换机又有什么特性&#xff1f;今天小编就来聊聊这个话题希望能协助您快准狠地选好交换机。 网管型和非网管网络交换机在各个方面存在差异&#xff…

Golang每日一练(leetDay0035) 二叉树专题(4)

目录 103. 二叉树的锯齿形层序遍历 Binary Tree Zigzag Level Order Traversal &#x1f31f;&#x1f31f; 104. 二叉树的最大深度 Maximum Depth of Binary-tree] &#x1f31f; 105. 从前序与中序遍历序列构造二叉树 Construct-binary-tree-from-preorder-and-inorder-…