使用echarts根據屏幕變化重新繪制圖,一直報這個錯,找個了半天也沒有發現是哪里的問題
watch: {
option: {
handler() {
this.myEchart = echarts.init(this.$refs.echartsRef)
this.myEchart.setOption(this.option)
// this.mountedEchart()
},
immediate: false
}
},
mounted() {
// this.mountedEchart()
// this.myEchart = echarts.init(this.$refs.echartsRef)
// this.myEchart.setOption(this.option)
//當屏幕大小發生改變時,重新畫圖
window.addEventListener('resize', () => {
this.myEchart.resize()
})
},
因為這個是我封裝的組件要監聽option的變化來重新繪制圖,所以在watch中init圖表
后來我在watch中和mounted中都初始化echarts.init(),這個報錯才解決。
watch: {
option: {
handler() {
// this.myEchart = echarts.init(this.$refs.echartsRef)
// this.myEchart.setOption(this.option)
this.mountedEchart()
},
immediate: false
}
},
mounted() {
this.mountedEchart()
// this.myEchart = echarts.init(this.$refs.echartsRef)
// this.myEchart.setOption(this.option)
//當屏幕大小發生改變時,重新畫圖
window.addEventListener('resize', () => {
this.myEchart.resize()
})
},
methods: {
mountedEchart() {
this.myEchart = echarts.init(this.$refs.echartsRef)
this.myEchart.setOption(this.option)
}
},
但是又出現一個警告echarts.js?1be7:2178 There is a chart instance already initialized on the dom.
又經過不懈的努力終於找到問題的所在了,還是對這個語法沒有好好理解,也沒有關注警告本身的問題,其實問題就和警告一樣,echarts實例已經存在
我是在實例存在的情況下又重新注冊了一遍
echarts.init(this.$refs.echartsRef)運行了兩遍,所有出現了警告
其實只要重新繪制圖標,只要重新setOption就好了,沒必要再次注冊
watch: {
option: {
handler() {
this.mountedEchart()
}
}
},
mounted() {
this.myEchart = echarts.init(this.$refs.echartsRef)
this.mountedEchart()
// this.myEchart.setOption(this.option)
//當屏幕大小發生改變時,重新畫圖
window.addEventListener('resize', () => {
this.myEchart.resize()
})
},
methods: {
mountedEchart() {
// this.myEchart = echarts.init(this.$refs.echartsRef)
//重新繪圖只要setOption就好了,不用再init了,再次init就會出現警告但是又出現一個警告
//`echarts.js?1be7:2178 There is a chart instance already initialized on the dom.`
this.myEchart.setOption(this.option)
}
},

