解决el-tabs切换tab无法显示echart,报错:Can't get DOM width or height.

581 阅读1分钟

先看错误提示:

image.png

原有代码:

<el-tabs @tab-click="handleSheetNameClick" v-model="selectedSheetName">
      <el-tab-pane v-for="sheetItem in sheetNames" :label="sheetItem" :name="sheetItem">
        <div style="display:flex; flex-wrap:wrap;" >
          <div class="echart-div" v-for="chartItem in echartDataArray" :id="chartItem.sheetName"></div>
        </div>
      </el-tab-pane>
</el-tabs>

默认加载第一个tab 页的时候,echart显示正常,但是切换到其他tab页面,echart就无法正常显示,F12会看到开头的错误提示。

搜索了很多方案,加延迟、代码重新给clientWidth、clientHeight赋值等等,都不可行

解决办法:
在echart 的容器div加上一个绑定 v-if="selectedSheetName === sheetItem",当选中的标签页名字符合预期时候显示该div,代码如下

<el-tabs @tab-click="handleSheetNameClick" v-model="selectedSheetName">
      <el-tab-pane v-for="sheetItem in sheetNames" :label="sheetItem" :name="sheetItem">
        <div style="display:flex; flex-wrap:wrap;" v-if="selectedSheetName === sheetItem">
          <div class="echart-div" v-for="chartItem in echartDataArray"   :id="chartItem.sheetName"></div>
        </div>
      </el-tab-pane>
</el-tabs>