vue项目在同一页面中引入多个echarts图表 ,并实现封装,自适应和动态数据改变

vue-Echarts

公司最近做项目需要用到图表,以前是使用echarts,现在也是用这个,没什么好纠结的! 但是最近发现以前每次做图表之类的都没有封装,每次做图表都要从新去配置之类的,写了好多重复代码,感觉很累啊,所以自己把图表封装成子组件使用,代码工作量减轻了很多,而且子组件使用了数据进行监听和图表自适应屏幕大小,这样以后会方便很多了!

当然公司的项目肯定不能发出来了,我会做个简单的demo出来

先截个图吧!


其实我也未作什么太复杂的工作,以前工作中,页面中要2个图表,我在methods:{}中写两个方法配置之类的,类似这样子:


好了,首先第一步,使用echarts当然要引用了  

1. vue  项目中   引用echarts  

   cnpm install echarts -S

执行完毕后再 main.js中引入


因为是pc端的项目,用了element  ui (不重要),引入之后就可以在全局使用了,之前对这个不是很懂,每个要图表页面都引入echarts,就像这个样子:


使代码写的乱七八糟的,现在在全局引用了,就不需要在每个用图表的页面中引入了

2.  父子组件中使用图表,现在我做的这个页面把他分成两个部分,这个页面整体为父,两个图表为子组件,这样子


1.先看下父组件代码,样式类的请忽视

### 回答1: 在Vue3中,当一个页面引入多个echarts时,由于每个echart实例都具有自己的Dom元素,且每个实例都需要根据父容器的大小进行自适应,可能会出现自适应失灵的问题。 为了解决这个问题,可以采取以下几个步骤: 1.确保每个echart实例的Dom元素都有唯一的id,在页面的template中设置不同的id。 2.在Vue3中,可以通过使用refs来获取echart实例,然后对每个实例进行相应的操作。 3.在生命周期的mounted钩子函数中,对每个echart实例进行初始化,设置其自适应。可以使用window的resize事件监听父容器的大小变化,然后调用echart实例的resize方法。 4.在数据更新后,可以通过watch来监听数据的改变调用相应的echart实例的setOption方法进行更新。 综上所述,通过以上步骤,可以使得多个echarts实例在同一页面中进行自适应且随着父容器的大小变化而更新。这样就可以解决多个echarts实例自适应失灵的问题。 ### 回答2: 当一个页面引入多个echarts图表时,使用Vue3进行自适应可能会导致失灵的情况发生。这是因为Vue3中的组件渲染数据响应机制发生了变化,可能会导致echarts图表无法正确地根据父容器的大小进行自适应。 要解决这个问题,我们可以采取以下步骤: 1. 在Vue3中,使用`nextTick`方法来确保DOM已经完全渲染后再进行echarts图表的初始化。在组件的`mounted`钩子函数中,使用`nextTick`来确保初始化的echarts图表能够正确获取父容器的大小。 2. 在需要自适应echarts图表中,使用`window.onresize`事件来监听窗口大小的变化,在事件回调函数中重新绘制图表。这样可以确保图表能够根据父容器的大小进行自适应。 3. 如果有多个echarts图表需要进行自适应,可以为每个图表添加一个专属的`resize`事件,在事件回调函数中根据当前图表的父容器大小重新绘制图表。 总结来说,要解决Vue3中多个echarts图表自适应失灵的问题,我们需要确保图表的初始化在DOM渲染完成后进行,通过监听窗口大小变化的事件来实现图表自适应。这样可以确保多个图表能够正确地根据父容器的大小进行自适应。 ### 回答3: 在Vue3中,当一个页面引入多个echarts图表且要实现自适应的时候,可能会出现自适应失灵的情况。这是因为echarts图表默认是根据其容器的大小来自适应的,而在Vue3中,由于组件的加载顺序以及页面的渲染顺序可能存在差异,导致echarts在计算容器大小时获取到的是不准确的数值。 解决这个问题的方法有以下几种: 首先,可以使用Vue3的生命周期钩子函数来手动触发echarts自适应计算。在mounted钩子函数中,使用ref获取到页面echarts容器的DOM元素,然后调用echarts的resize()方法,强制图表重新计算自适应大小。这样即使组件加载顺序有变化,也能确保每个图表都能正确地计算自适应大小。 其次,可以使用Vue3的watch特性来监听页面容器的大小变化。通过监听容器的widthheight属性,当属性发生变化时,调用echarts的resize()方法进行自适应计算。这样无论页面中有多少个echarts图表,只要有容器大小变化,都能触发echarts自适应计算。 最后,可以考虑使用Vue3提供的第三方插件或者封装自定义指令来处理echarts自适应。这些插件或者指令会在页面渲染完毕后自动触发echarts的resize()方法,保证图表大小的正确计算。通过使用这些插件或者指令,可以简化代码,提高开发效率。 综上所述,通过合理运用生命周期钩子函数、watch特性以及第三方插件或自定义指令,可以解决在Vue3中多个echarts图表自适应失灵的问题。这样能够确保页面中的每个图表都能正确计算适应大小,提供良好的用户体验。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值