問題描述:
使用Vuex管理數據時,在組件內使用$emit分發事件后,獲取回來的數據要自動更新到該組件內,需要使用computed來計算更新。
一開始嘗試使用賦值給data的方法,后來發現重新發起ajax請求數據后無法更新新數據。
因為data屬性只是在組件實例化時賦值一次,依賴發生變化時不會更新,想要使用data來獲取computed同樣的效果可以對data的字段進行watch。
而計算屬性是基於它的依賴緩存的。計算屬性在它的相關依賴發生改變時會重新取值,所以當ajax請求回來的數據發生變化時,計算屬性的值會進行更新,相關的模板引用也會重新渲染。
相比較而言使用computed更方便,如下是在實際應用中要不斷更新的字段,this.$store.state.templateStorage.recommendTpl 是由ajax重新獲取的數據。
computed: { recommendTpl () { return this.$store.state.templateStorage.recommendTpl; } },