Error: `resize` should not be called during main process.


使用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)
    }
  },

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM