使用v-if操作两个echarts图显示的时候的渲染问题(图表实例没有)

16,451次阅读
没有评论

共计 1040 个字符,预计需要花费 3 分钟才能阅读完成。

一、问题描述

最近使用 v -if 的时候操作 echarts 的时候出现了一个奇怪的问题,问题的效果图如下:

使用 v -if 操作两个 echarts 图显示的时候的渲染问题(图表实例没有)

本来想弄的效果是,点击 true 按钮的时候显示圆环图,然后点击 false 按钮的时候显示一个柱状图,页面初始化的时候,圆环图没有任何问题,但是在点击 false 显示柱状图之后再点 true 按钮显示圆环图的时候,就会出现上面的问题。

代码是这样的:

// 两个按钮
true false
// 柱状图和圆环图

 二、出现原因

一开始以为是 v -if 的问题,后面才发现是 echarts 的问题,也可以说是自己操作的问题。因为 echarts 的官方文档写了下面这样一句话。唉!学艺不精啊!!!!!一开始都没怎么注意这句话,直到出现问题之后,后面回头才发现这句话。看文档还是要仔细啊!!!!!

使用 v -if 操作两个 echarts 图显示的时候的渲染问题(图表实例没有)

因为我操作两个 echarts 的时候,初始的方法是各有一个,会分别生成两个实例,然后因为 echarts 在一个标签里面操作,两个实例都是在同一个 canvas 上面,就会导致出现上面的情况。

三、解决方法

解决的办法也挺多的。

①使用 echarts 提供的方法 dispose() 对实例进行销毁,这个是比较推荐的。就像下面这样。

    openUseAmount() {
      this.visible = true;
      this.pieChart?.dispose();
      this.initPie();},
    openUseMoney() {
      this.visible = false;
      this.barChart?.dispose();
      this.initBar();},
 // 基于准备好的 dom,初始化 echarts 实例
        let myChart = echarts.init(document.getElementById('main_pie'));
        this.pieChart = myChart;

pieChart 和 barChart 都是 echarts 实例,每次重新调用初始化 echarts 的方法之前都对实例进行一下销毁。echarts 网址:图表容器及大小 – 概念篇 – Handbook – Apache ECharts

②不使用 v -if 方法操作,使用 v -show 方法对 echarts 方法进行操作,v-if 和 v -show 的操作原理是不一样的,v-show 会直接将 display 置为 none。也能避免上面的问题,但只能说治标不治本。

当然还有很多其他的方法可以避免上面的问题,也就不一一叙述了。如果有更好的方法,欢迎大家在评论区探讨。

原文地址: 使用 v -if 操作两个 echarts 图显示的时候的渲染问题(图表实例没有)

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-30发表,共计1040字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)