vue中父元件通過props向子元件傳非同步值為空的解決方案
阿新 • • 發佈:2019-01-24
一、問題描述
封裝了一個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的方法。