2017-08-22 119 views
0

所以在我的代碼,我有一個計算值today,讓我來訪問當前的日,月,年,使用下面的代碼:vue.js是否更新依賴於方法的計算屬性?

today: function() { 
    var currentDate = new Date(); 
    return { 
    day: currentDate.getDate(), 
    month: currentDate.getMonth(), 
    year: currentDate.getFullYear() 
    }; 
} 

現在就我的理解去,之間的差額計算屬性和方法是計算道具被緩存,並且只有在它們的依賴項(例如,正常屬性)發生變化時纔會重新計算,而方法則每次都完全計算。

現在在我的情況下,沒有依賴關係。因此,如果初始化時間是2017年12月24日深夜,我會在幾分鐘後訪問today.day,這是25日 - 我會得到原始值還是會重新計算值?

從技術上講,沒有屬性是這個計算屬性的依賴關係,所以沒有任何改變。根據以下官方指南摘錄,today.day仍應該等於24

但是,不同之處在於計算出的屬性是基於它們的依賴關係進行緩存的。計算屬性只會在其某些依賴項發生更改時纔會重新評估。

回答

1

答案是,事實上,即使是隱藏在代碼中的官方指南中的幾行:

這也意味着下面的計算性能將永遠不會更新,因爲Date.now()是沒有反應依賴性:

computed: { 
    now: function() { 
    return Date.now() 
    } 
} 

因此,在這種或類似的情況下,你應該使用的方法。

我希望這可以幫助別人不想在每次他們有問題時閱讀整個指南,而寧願只使用google/stackoverflow。