亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue computed 計算屬性當依賴屬性更新時計算屬性沒有執行?

vue computed 計算屬性當依賴屬性更新時計算屬性沒有執行?

飲歌長嘯 2018-07-06 13:13:48
computed: {         comp: function () {                 return () => import(`./component/item${this.formItem.item_type}.form`);     } },當我切換this.formItem.item_type的值,comp沒有被觸發computed: {     comp: function () {             console.log(this.formItem.item_type)             return () => import(`./component/item${this.formItem.item_type}.form`);     } },當我加上console.log(this.formItem.item_type)時,正常觸發,注釋掉又不能正常觸發,這是為什么呢?另外:我使用watch去監聽 正常了watch:{         'formItem.item_type': function (val, oldVal) {             this.comp = () => import(`./component/item${this.formItem.item_type}.form`);     } },補充this.formItem對象
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

因為只有你在計算屬性內訪問了相應的變量, 計算屬性才能形成對其的依賴.

a = () => import(`./component/item${this.formItem.item_type}.form`);

當 a 函數沒有調用時, this.formItem.item_type 是不會被求值的, 也就一直沒有被訪問過, 所以無法被計算屬性收集為依賴, 你 console.log(this.formItem.item_type) 觸發了 this.formItem.item_type 的訪問, 完成了依賴收集, 自然沒有問題.

還有, 像這種永遠不會被執行的代碼, 也無法被收集依賴.

if (false) {
 a = this.formItem.item_type
}

解決方案:

comp: function () {    // 顯示的取值, 使 comp 收集依賴
    this.formItem.item_type;  
    return () => import(`./component/item${this.formItem.item_type}.form`);
}


查看完整回答
反對 回復 2018-07-12
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

先看一下 this.formItem.item_type 是不是響應式吧。用開發者工具展開到這一步,如果是 (...) 或者下面有淺色的 get/set 就是,不然的話,這個變量并未被觀察,所以沒有響應式。

查看完整回答
反對 回復 2018-07-12
  • 2 回答
  • 0 關注
  • 3693 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號