这个问题我查过很多地方,也用了好几种大家说过的方法,比如重新加载reSize函数(重新设置宽高),用echarts自带的属性设置默认宽高(如果页面自适应,不可取),反正前前后后好几种都没解决问题,然后我就找到了这一篇博文:
指路:https://www.jianshu.com/p/4d0c4f43ddd1
简单明了,或者说之前也可能查到过,但是没有这么直接的,
总结一下:用this.$nextTick(()=>{…}等到dom加载完成的时候再渲染echarts
希望有这个问题的小伙伴迅速解决问题不再浪费时间~~
---------------分界线--------------------------------------------------------------------
2022/06/08
今天我又发现了这个问题的引申出的新问题
问题:
tab页切换,A和B需要同时渲染,但是B中有echarts,也就是在B渲染的时候,dom还没有实际的宽高,这个时候就会导致echarts页面的%失效,会显示默认的canvas宽高100
解决:
强制echarts大小更新
解析:
tab页切换常用的有两种实现方法:v-show或v-if,一般都会选择v-show不然会出现渲染dom的问题,但是有时候使用v-show明明渲染了,却没有实际页面的大小,就会导致echarts获取不到实际宽高,从而宽高失效;解决办法就是强制携带一个值,在这个值改变的时候进行页面刷新或者说是调用echarts的resize重绘页面就可以了