解决echarts和v-show一起使用,导致显示不全,宽度仅100px,无法重新渲染的问题

  • 这里我希望在没数据的时候,使用v-show控制图表和空状态的切换
<template>
  <div class="chart-container">
    <!-- 图表容器 -->
    <div ref="chart" v-show="data?.length" class="chart-dom"></div>
    <!-- 空状态 -->
    <el-empty v-show="!data?.length" />
  </div>
</template>


data() {
    
    
  return {
    
    
    chart: null,
    data: [],
  };
},
  • 但是v-show控制后图表的宽度只有100 * 100 px
    在这里插入图片描述

后来想过改成v-if,但是echarts容器dom销毁了,初始化也就会报错

解决办法在updated()钩子函数中重新resize()一下就好了。

updated() {
    
    
  this.chart && this.chart.resize();
},
  • 问题解决

在这里插入图片描述