Vue使用Echarts圖表多次初始化報錯問題的解決方法
問題
Vue項目中需要用Echarts的柱狀圖顯示數(shù)據(jù),并且每次搜索要更新柱狀圖。
這時候小編發(fā)現(xiàn)在控制臺會出現(xiàn)這樣的報錯:
原來的代碼是這樣的,頁面掛載和搜索時都會調(diào)用init方法
initChart (dataSet = [5, 20, 36, 10, 10, 20]) { this.barChart = echarts.init(this.$refs.chartBox) const option = { title: { text: 'ECharts 入門示例' }, tooltip: {}, legend: { data: ['銷量'] }, xAxis: { data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子'] }, yAxis: {}, series: [ { name: '銷量', type: 'bar', data: dataSet } ] } this.barChart.setOption(option)
方法一 銷毀實例
在initChart()內(nèi)第一行打印 console.log(this.barChart),發(fā)現(xiàn)頁面掛載的時候輸出是:
點擊搜索按鈕,觸發(fā)第二次初始化是輸出是:
因此考慮在每次初始化echarts實例之前銷毀已經(jīng)存在的實例:
initChart (dataSet = [5, 20, 36, 10, 10, 20]) { if (this.barChart) { this.barChart.dispose() this.barChart = null } this.barChart = echarts.init(this.$refs.chartBox) const option = { title: { text: 'ECharts 入門示例' }, tooltip: {}, legend: { data: ['銷量'] }, xAxis: { data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子'] }, yAxis: {}, series: [ { name: '銷量', type: 'bar', data: dataSet } ] } this.barChart.setOption(option) }
方法二 不要頻繁創(chuàng)建實例
再找解決辦法的過程中,小編發(fā)現(xiàn)更新數(shù)據(jù)用setOption就可以,不必頻繁創(chuàng)建echarts實例。真是愚蠢的小編。
handleSubmit () { this.barChart.setOption({ series: [{ data: [12, 12, 36, 12, 12, 12] }] }) }
雖然setOption可以在這種場景規(guī)避多次實例化,但是有一種場景:當vue的頁面切換時echarts實例的dom容器元素被銷毀又重新創(chuàng)建了,echarts會因為找不到容器元素而報錯。
這種場景可以在init前dispose實例。
之后有時間小編試試重現(xiàn)容器元素重新創(chuàng)建引發(fā)問題的這種場景。
總結(jié)
vue使用echarts初始化報錯可以考慮銷毀echarts實例,clear()方法并不徹底,考慮使用dispose()。
到此這篇關(guān)于Vue使用Echarts圖表多次初始化報錯問題解決的文章就介紹到這了,更多相關(guān)Vue Echarts圖表初始化報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于實現(xiàn)Vue3版抖音滑動插件踩坑指南
這篇文章主要給大家介紹了關(guān)于實現(xiàn)Vue3版抖音滑動插件踩坑指南,文中通過實例代碼介紹的非常詳細,對大家學習或者使用vue3具有一定的參考學習價值,需要的朋友可以參考下2022-02-02Vue echart實現(xiàn)柱狀圖,電池圖,3D柱圖和3D圓柱圖代碼詳解
這篇文章主要為大家介紹了Vue實現(xiàn)echart繪圖代碼詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01vue中調(diào)用百度地圖獲取經(jīng)緯度的實現(xiàn)
最近做個項目,需要實現(xiàn)獲取當前位置的經(jīng)緯度,所以本文主要介紹了vue中調(diào)用百度地圖獲取經(jīng)緯度的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08vue測試環(huán)境打包與生產(chǎn)環(huán)境打包文件數(shù)量不一致解決方案
這篇文章主要為大家介紹了vue測試環(huán)境打包與生產(chǎn)環(huán)境打包文件數(shù)量不一致的解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05Vue?Router嵌套路由(children)的用法小結(jié)
嵌套路由就是父路由里面嵌套他的子路由,父路由有自己的路由導航和路由容器(router-link、router-view),通過配置children可實現(xiàn)多層嵌套,這篇文章主要介紹了Vue--Router--嵌套路由(children)的用法,需要的朋友可以參考下2022-08-08vue中使用window.open()參數(shù)示例詳解
這篇文章主要介紹了vue中使用window.open()參數(shù)詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04Vue+Node實現(xiàn)商品列表的分頁、排序、篩選,添加購物車功能詳解
這篇文章主要介紹了Vue+Node實現(xiàn)商品列表的分頁、排序、篩選,添加購物車功能,結(jié)合實例形式分析了vue.js前臺商品分頁、排序、篩選等功能及后臺node.js處理技巧,需要的朋友可以參考下2019-12-12