最近做echarts图表时,因为涉及到使用开关变量控制不同图表的显示隐藏,用v-if时会出现没有获取到dom结构而报错,所以改用v-show,但是v-show本身是结构已经存在,当数据发生变化时,结构并未重新渲染,所以会出现echarts图表未获取到最外层大盒子的宽度而显示一半的情况,就像下图:
出现这种情况有两种解决方法:
1. 使用定时器,调用渲染图表的函数时,设置延迟一秒图表就可以正常显示。
示例代码:
2.使用this.$nextTick(),建议用这个方法
this.$nextTick(()=>{
//在这里调用渲染图表的函数
)
示例代码:
注意:最后一定要使用echarts的resize()函数刷新图表,才能使图表重新渲染,宽高正常显示。
如:
参考内容:https://blog.csdn.net/hong521520/article/details/108603900