Vue 中,計算屬性(computed)是一種常用的代碼機制,它用于計算并返回數據,通常用于根據已有的數據計算新的派生狀態。Vue 在數據發生變化時會自動觸發計算屬性的重新計算,并刷新對應的視圖。
但有時候,計算屬性不能自動刷新,這時候需要手動更新它們。這種情況常見于以下兩種情況中:
1. 當計算屬性依賴的數據并沒有發生變化,但需要計算屬性進行刷新。
// 以下代碼中,當 count 并沒有發生變化時,computed 方法不會自動刷新。 // 此時需要手動調用 refresh 方法刷新 computed computed: { result() { return this.count * 2 } }, methods: { refresh() { this.$forceUpdate() } }
2. 當計算屬性依賴的數據被改變,但計算屬性并沒有響應式地記錄下來這種變化時。
// 以下代碼中,當 source 數組被改變時,computed 方法不會自動刷新, // 因為 computed 并沒有響應式地記錄下 source 數組的變化。 // 此時需要使用容器對象,將數組作為屬性存入,從而實現響應式變化, // 進而自動刷新 computed 方法。 data() { return { container: { source: [1, 2, 3] } } }, computed: { result() { return this.container.source.join(',') } }, methods: { change() { this.container.source.push(4) } }
在 Vue 中使用 computed 很方便,但是不了解其刷新機制可能會遇到一些問題。通過了解 computed 的刷新機制可以幫助我們更高效地處理相應的計算屬性。