vue apexcharts:组件中的图表在从 props 获取 axios 数据后直接渲染而没有动画

vue apexcharts: charts in component rendered directly without animation after get axios data from props

在父模板中,我调用了一个组件并传递了axios数据:

// template
<myChart
 :pdata="axiosData"
/>

// script
export default {
  data() {
    return {
      axiosData,
    }
  }
  created() {
    axios.get('some-url')
      .then(response => {
        this.axiosData = response.data
      })
  }
}

因为子组件“myChart”在接收到道具数据之前渲染了一个空图表,所以我更新了手表中的图表系列:

// below code is implemented in component
// template
<vue-apex-charts
  type="donut"
  height="200"
  :series="mySeries"
  :options="myOptions"
/>

// script
export default {
  props: {
    pdata: {
      type: Array,
      default: () => [],
    },
  },
  data() {
    return {
       mySeries: [],
       myOptions: ...
    }
  },
  watch: {
    pdata(val) {
      this.mySeries= val
    },
  }
}

图表中的数据呈现时没有任何动画 - 如果我在 data() 中设置静态系列,则图表会呈现动画。

我尝试了一些API,比如ApexCharts.render()、ApexCharts.updateOptions(..)、ApexCharts.updateSeries(..),但它们都无法触发道具数据更新后的数据动画 watch.

那么在这种情况下的最佳做法是什么?从服务器获取axios数据后如何触发动画...

提前致谢。

终于找到解决办法了...

添加v-if="pdata && pdata.length"可以触发道具数据接收后的动画