欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Vue中使用Echarts出現(xiàn)There?is?a?chart?instance?already?initialized?on?the?dom的警告問題

 更新時間:2023年06月19日 09:52:31   作者:唐志遠  
使用echarts的時候,多次加載會出現(xiàn)There?is?a?chart?instance?already?initialized?on?the?dom.這個黃色警告,此警告信息不影響echarts正常加載,但是有bug得解決,本文就帶大家解決這個問題,感興趣的同學(xué)可以參考閱讀

問題描述

使用echarts的時候,多次加載會出現(xiàn)There is a chart instance already initialized on the dom.這個黃色警告,大概意思就是dom上已經(jīng)初始化了一個圖表實例。此警告信息不影響echarts正常加載,但是有bug不解決的話,心里癢的慌!

先說明一下,echarts是用在了子組件的彈窗里,然后在父組件打開彈窗時調(diào)用echarts.init()的初始化方法。第一次渲染正常,之后再打開彈窗控制臺就會報There is a chart instance already initialized on the dom.

父組件中的代碼:

const taskDetailDom = ref()
const open = ()=> {
    if (taskDetailDom.value) {
        taskDetailDom.value.initEchart()
    }
}

如何造成的? 這里只區(qū)別了子組件的寫法。

錯誤寫法:

<script setup lang='ts'>
import echarts from "@/utils/custom/echart"
let tChart: Ref<HTMLDivElement | null> = ref(null)
const initEchart = () => {
   const dom = tChart.value
   if (dom) {
      let myChart = echarts.init(dom)
      myChart.setOption(option)
   }
}
defineExpose({
   initEchart
})

關(guān)于import echarts from "@/utils/custom/echart"此處中的代碼(可參考官方示例)如下:

import * as echarts from 'echarts/core';
import {
    BarChart,
    LineChart,
    PieChart
} from 'echarts/charts';
import {
    LegendComponent,
    TitleComponent,
    TooltipComponent,
    GridComponent,
    // 數(shù)據(jù)集組件
    DatasetComponent,
    // 內(nèi)置數(shù)據(jù)轉(zhuǎn)換器組件 (filter, sort)
    TransformComponent
} from 'echarts/components';
import { LabelLayout, UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';
import type {
    // 系列類型的定義后綴都為 SeriesOption
    BarSeriesOption,
    LineSeriesOption
} from 'echarts/charts';
import type {
    // 組件類型的定義后綴都為 ComponentOption
    LegendComponentOption,
    TitleComponentOption,
    TooltipComponentOption,
    GridComponentOption,
    DatasetComponentOption
} from 'echarts/components';
import type {
    ComposeOption,
} from 'echarts/core';
// 通過 ComposeOption 來組合出一個只有必須組件和圖表的 Option 類型
type ECOption = ComposeOption<
    | BarSeriesOption
    | LegendComponentOption
    | LineSeriesOption
    | TitleComponentOption
    | TooltipComponentOption
    | GridComponentOption
    | DatasetComponentOption
>;
// 注冊必須的組件
echarts.use([
    LegendComponent,
    TitleComponent,
    TooltipComponent,
    GridComponent,
    DatasetComponent,
    TransformComponent,
    BarChart,
    LineChart,
    PieChart,
    LabelLayout,
    UniversalTransition,
    CanvasRenderer
]);
export default echarts;

解決方法

在方法最外層定義echarts dom對象,然后echarts.init()之前,判斷dom是否為空或未定義,如果已存在則調(diào)用dispose()方法銷毀,再初始化echarts.init()。

let tChart: Ref<HTMLDivElement | null> = ref(null)
let myChart: any // 1. 最外層定義 echarts dom
const initEchart = () => {
   const dom = tChart.value
   if (dom) {
      // 2. 判斷 dom 是否為空或未定義
      if (myChart != null && myChart != "" && myChart != undefined) {
        // 3. 已存在則調(diào)用 dispose() 方法銷毀
         myChart.dispose();
      }
      myChart = echarts.init(dom)
      myChart.setOption(option)
   }
}
defineExpose({
   initEchart
})

到此這篇關(guān)于解決Vue中使用Echarts出現(xiàn)There is a chart instance already initialized on the dom的警告問題的文章就介紹到這了,更多相關(guān)Vue中使用Echarts出現(xiàn)的問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實現(xiàn)頂部菜單欄

    vue實現(xiàn)頂部菜單欄

    這篇文章主要為大家詳細介紹了vue實現(xiàn)頂部菜單欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • vue項目使用cmd運行方式

    vue項目使用cmd運行方式

    在開發(fā)過程中,啟動項目是必不可少的一步,本文介紹了兩種啟動項目的方法,第一種方法是通過命令提示符(cmd)進入項目目錄,然后輸入npm run serve來啟動項目,第二種方法是直接在項目目錄下打開命令提示符(cmd),輸入npm run serve即可啟動項目
    2024-10-10
  • 詳解vue3.2新增的defineCustomElement底層原理

    詳解vue3.2新增的defineCustomElement底層原理

    本文主要介紹了vue3.2新增的defineCustomElement底層原理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue動態(tài)獲取width的方法

    Vue動態(tài)獲取width的方法

    今天小編就為大家分享一篇Vue動態(tài)獲取width的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 解讀element?el-upload上傳的附件名稱不顯示?file-list賦值

    解讀element?el-upload上傳的附件名稱不顯示?file-list賦值

    這篇文章主要介紹了解讀element?el-upload上傳的附件名稱不顯示?file-list賦值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 一文詳解Vue Router的使用和路由守衛(wèi)

    一文詳解Vue Router的使用和路由守衛(wèi)

    Vue Router 是 Vue.js 的官方路由庫,用于在 Vue 應(yīng)用中實現(xiàn)單頁面應(yīng)用(SPA)的客戶端路由,以下是 Vue Router 的詳細介紹,包括基本概念、配置、路由導(dǎo)航以及高級用法,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08
  • Vue渲染函數(shù)詳解

    Vue渲染函數(shù)詳解

    下面小編就為大家?guī)硪黄猇ue渲染函數(shù)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue點擊標(biāo)簽切換選中及互相排斥操作

    vue點擊標(biāo)簽切換選中及互相排斥操作

    這篇文章主要介紹了vue點擊標(biāo)簽切換選中及互相排斥操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • crypto-js對稱加密解密的使用方式詳解(vue與java端)

    crypto-js對稱加密解密的使用方式詳解(vue與java端)

    這篇文章主要介紹了如何在Vue前端和Java后端使用crypto-js庫進行AES加密和解密,前端通過創(chuàng)建AES.js文件來實現(xiàn)加密解密功能,并在Vue文件或JavaScript中使用,后端則可以直接使用Java代碼進行AES加密和解密操作,需要的朋友可以參考下
    2025-01-01
  • vue3.0搭配.net core實現(xiàn)文件上傳組件

    vue3.0搭配.net core實現(xiàn)文件上傳組件

    這篇文章主要介紹了vue3.0搭配.net core實現(xiàn)文件上傳組件,幫助大家開發(fā)Web應(yīng)用程序,完成需求,感興趣的朋友可以了解下
    2020-10-10

最新評論