解决Vue3 echarts v-show无法重新渲染的问题

 更新时间:2023年09月11日 14:12:14   作者:woflyoycm  
这篇文章主要介绍了Vue3 echarts v-show无法重新渲染的问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Vue3 echarts v-show无法重新渲染的问题

部分html代码如下

<el-empty class="chart-small" v-if="!dataList || !dataList.length" description="没有数据"/>
<div class="chart-small" ref="dataBarDom" v-show="dataList && dataList.length">

部分js代码如下

这里需要引入nextTick方法

import {ref, onMounted, reactive, nextTick} from "vue";
onMounted(async ()=>{
    getData()
})
// echarts相关
const dataBarDom = ref()//关联图标div的ref
let dataBar = null
// 需要显示的数据(有数据显示,没有数据不显示)
const dataList=ref([])
const getData=async ()=>{
    // 从后台获取需要渲染的数据
    dataList.value=await getDataFromDb()
    if(dataList.value.length){
        showChart.value=true
        nextTick(() => {
            dataBar= echarts.init(dataBarDom.value)
            //...以下省略渲染echart的代码
        })
    }else{
        showChart.value=false
    }
}

nextTick方法之后(Dom重新渲染)再去调用echarts图标的生成方法即可

vue3线上环境组件重新渲染echarts图表无法正常显示问题

一、echarts在vue3的使用问题

环境:

Vue3 版本

echarts 5.3.2版本

  "core-js": "^3.8.3",
    "echarts": "^5.3.2",
    "element-plus": "^2.0.4",
    "vue": "^3.2.13",
    "vue-router": "^4.0.13",
    "vue-ueditor-wrap": "^3.0.8"

问题描述:

线上环境vue组件第一次渲染时echarts图表可以正常渲染展示,但是第二次进入组件时(组件重新渲染)echarts无法正常渲染展示。

升级echarts5后发现的问题。

排查:

通过检查dom发现虽然组件第二次重新渲染时,第一次组件渲染生成的echarts实列依然存在(未销毁)导致第二次组件渲染但是echarts无法成功渲染展示

解决方案:

在组件每次渲染时都执行一次echants实列销毁操作。

目前还没找到更好的解决方法,至少目前可行。

二、解决方案1

      // 基于准备好的dom,初始化echarts实例
      echarts.init(document.getElementById("monthCollect")).dispose();
      var myChart = echarts.init(document.getElementById("monthCollect"));
      myChart.setOption()

三、解决方案2

// 取得Dom
var main=document.getDocumentByID()
//先获取dom实例,执行销毁
let existInstance = echarts.getInstanceByDom(main);
if (existInstance) {
    if (true) {
        echarts.dispose(chartStudent);
    }
}
// 初始化&配置設定
let mychart = echarts.init(main);
mychar.setOption({....});

到此这篇关于Vue3 echarts v-show无法重新渲染的问题的文章就介绍到这了,更多相关Vue3 echarts v-show无法重新渲染内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • uniapp webview和H5通信的3种方式代码示例

    uniapp webview和H5通信的3种方式代码示例

    最近在研究uni-app跨端开发APP和H5的通讯和交互,比如H5调用APP的方法,APP往H5里面传参,H5往app外面传参,这篇文章主要给大家介绍了关于uniapp webview和H5通信的3种方式,需要的朋友可以参考下
    2024-04-04
  • vue + echarts实现中国省份地图点击联动

    vue + echarts实现中国省份地图点击联动

    这篇文章主要介绍了vue + echarts实现中国地图省份点击联动,需要的朋友可以参考下
    2022-04-04
  • Vue组件封装方案实现浅析

    Vue组件封装方案实现浅析

    这篇文章主要介绍了Vue组件封装方案实现,我们将从分析组件封装的优势开始,然后依次介绍 vue.js 的基本概念,以及如何创建、封装和使用自定义组件
    2023-03-03
  • vue实现四级导航及验证码的方法实例

    vue实现四级导航及验证码的方法实例

    我们在做项目经常会遇到多级导航这个需求,所以下面这篇文章主要给大家介绍了关于vue实现四级导航及验证码的相关资料,文章通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • vue.js仿hover效果的实现方法示例

    vue.js仿hover效果的实现方法示例

    这篇文章主要介绍了vue.js仿hover效果的实现方法,结合实例形式分析了vue.js事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下
    2019-01-01
  • 详解vue 在移动端体验上的优化解决方案

    详解vue 在移动端体验上的优化解决方案

    这篇文章主要介绍了vue 在移动端体验上的优化解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue中的Computed实现原理分析

    Vue中的Computed实现原理分析

    这篇文章主要介绍了Vue中的Computed实现原理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue.js组件tab实现选项卡切换

    Vue.js组件tab实现选项卡切换

    这篇文章主要为大家详细介绍了Vue.js组件tab实现选项卡切换的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Vue-CLI项目中路由传参的方式详解

    Vue-CLI项目中路由传参的方式详解

    这篇文章主要介绍了Vue-CLI项目中路由传参的方式详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • VueJs打包之后遇到的坑及解决

    VueJs打包之后遇到的坑及解决

    这篇文章主要介绍了VueJs打包之后遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论