echarts图表随网页大小变化而重新渲染

前提问题:数据可视化大屏展示包含echarts图表,当网页进行放大或缩小时,echarts图表需要根据自己所在的父级区域的大小变化而变化

解决过程:echarts图表初始化渲染后,需要监听网页变化,随之进行resize,添加全局的监听事件后,要进行销毁该监听事件,否则会因为全局事件一直存在,造成内存泄漏

解决结果:

本项目中使用了mitt机制进行方法传递,mitt机制如何使用详见另一篇文章关于mitt的注入与使用

1.在echarts图表所在的子组件内封装全局唯一名称的方法

//图表根据窗口大小变化自适应大小
const isFruitWorkWindowResize = bool =>{
    if(bool){
        fruitChart.resize()
    }
}
mitter.on('isFruitWorkWindowResize', isFruitWorkWindowResize)
onBeforeUnmount(() => {
  //销毁事件
  mitter.off('isFruitWorkWindowResize', isFruitWorkWindowResize)
})

2.在大屏父组件中,监听到全局大小发生改变时,进行调用echarts图表的resize方法

//重新渲染图表
const resizeEcharts = () => {
   mitter.emit('isFruitWorkWindowResize',true)
}
onMounted(() => {
    //图表大小随窗口大小自适应
    window.addEventListener('resize',resizeEcharts)
});

3.在离开当前页面后进行销毁全局监听

onBeforeUnmount(() => {
    //销毁
    window.removeEventListener('resize', resizeEcharts);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值