1. 程式人生 > >vue中父元件通過props向子元件傳非同步值為空的解決方案

vue中父元件通過props向子元件傳非同步值為空的解決方案

一、問題描述

封裝了一個highchart元件,想要複用,結果props傳值一直失敗,圖自然畫不出來,watch,mounted等鉤子函式都試過依然不行。

二、解決方案

因為父元件的值是通過axios請求獲得,當父元件拿到處理後的值時,子元件鉤子函式生命週期已經走完,即便拿到值也不會再次渲染。

簡單的解決方案就是通過v-if,設定一個flag,讓子元件在父元件拿到值後再開始渲染。

但是這種解決方案會對頁面效能造成影響。

百度到另一種方法是利用vuex的狀態管理,還沒有進行嘗試,明天嘗試後更新!

今天太累了,就不上圖了,若是有更好的方法,我會更新,大家若是有更好的方法,請一定給我留言,謝謝!

2018/10/02

今天又嘗試了一番,發現用watch也能實現動態資料監聽和重新整理,就是下面這幾行程式碼,

watch:{
    option:{
      handler(newvalue,oldvalue){
       HighCharts.chart(this.id,this.option)
      },
      deep:true
    }
  }

但是watch的效果反而不如v-if,延遲高得多,我也不清楚是什麼情況,watch的原理大概就是個無限迴圈的監聽,我猜可能是迴圈週期的問題吧。

所以最後我還是選擇了v-if的方法。