echarts自适应,封装 echarts后获取实例方法

博客指出Echarts存在自适应的BUG,当选项卡外部盒子设置为%时,其高宽会变成width:100px;height:100px。针对此问题给出解决办法,若选项卡自己编写,可添加延迟定时器;还提到Echarts提供的方法能在外部获取实例,解决了后台管理多图表外部调用难题。

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

自适应: echarts有一个很明显的BUG,在选项卡中外部盒子设置的是%;echarts会出现高宽变成width:100px;height:100px;这个很让人闹心,真心很恶心;

解决办法:

1、如果选项卡是自己写的话:(代码更容易懂)

$(document).on('click','.nav li',function(){
	myChart.resize();
    ....
})

一般像echarts都是后台管理会用到而后台都是用UI框架来搭建的选项卡都是用框架里面的代码如下:

$("a[data-toggle='tab']").click(function(){
 var ExchangeEchartsHandle = echarts.getInstanceByDom(document.getElementById("mainLine"));
 setTimeout(function(){
     ExchangeEchartsHandle.resize();
 })
...
})

我添加了一个延迟定时器,我也是测试出来要用到这个  倒是具体为什么不是很懂,但是好使,哈哈

封装echart到一个函数内在外部很难获取到这个实例对象,echarts提供了一个方法

var ExchangeEchartsHandle = echarts.getInstanceByDom(document.getElementById("mainLine"));
            	

这个方法是可以在外部获取到实例的;后台管理页面一个页面一般有很多个图表,这个方法就很好的解决了外部调用的难题;

### Vue 3 中封装 ECharts 实现自适应 在 Vue 3 应用程序中,为了使 ECharts 图表能够自动调整其尺寸以匹配容器的变化,可以采用组件化的方式进行封装。通过这种方式不仅提高了代码的可维护性和重用率,还解决了图表大小随视窗变化而更新的问题。 #### 创建 ECharts 组件模板结构 定义一个简单的 `div` 容器用于承载图表实例,并赋予唯一的 ID 属性以便初始化时定位 DOM 节点[^1]: ```html <template> <div class="charts-wrapper" :id="sid"></div> </template> <script setup lang="ts"> import * as echarts from 'echarts/core'; // 导入必要的模块... </script> ``` #### 初始化并配置图表实例 利用组合式 API (`setup`) 或选项式 API 构建方法来完成图表对象的创建过程,在此过程中指定渲染目标以及应用初始设置[^2]: ```javascript export default { props: ['sid'], mounted() { this.initChart(); }, methods: { initChart() { const el = document.getElementById(this.sid); let myChart = echarts.init(el); // 设置图表样式和其他参数... // 添加窗口改变事件监听器 window.addEventListener('resize', () => { setTimeout(() => { myChart.resize(); }, 500); // 延迟执行确保DOM已完全重新布局 }); return myChart; } } } ``` 上述代码片段展示了如何在一个 Vue 3 单文件组件内集成 ECharts 并为其添加自适应特性。每当浏览器窗口尺寸发生变化时,都会触发相应的回调函数去通知图表刷新自身的显示区域。 #### 关于性能优化建议 考虑到频繁调用 `resize()` 可能会对性能造成影响,因此可以在实际开发中考虑引入防抖动机制(debounce),从而减少不必要的重绘操作次数。此外,当组件卸载时记得移除全局事件监听以防内存泄漏问题的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值