當Vue組件的狀態變化時,頁面也隨之更新。這種更新是由Vue的響應式機制實現的,Vue會跟蹤組件數據的所有變化,并相應地重新渲染頁面的視圖。這種響應性的實現中,computed是極為重要的一個概念。 computed是一種語法糖,它會對Vue組件的數據進行計算和緩存處理,并返回計算結果。它和methods類似,但不同之處在于computed的計算結果是緩存的,在計算它多次時,它只會重新計算一次。
// 舉例
export default {
data () {
return {
firstName: '張',
lastName: '三'
}
},
computed: {
fullName () {
console.log('computed fullName')
return this.firstName + this.lastName
}
},
methods: {
getFullName () {
console.log('method getFullName')
return this.firstName + this.lastName
}
}
}
在上面的例子中,我們定義了一個computed:fullName和一個方法getFullName。computed和methods都可以用于計算數據,它們的區別在于computed的計算結果是緩存的。運行代碼,我們發現computed只會在firstName和lastName變更時重新計算,而方法getFullName每次調用都會被執行,無論firstName和lastName是否有變化。
使用computed還可以簡化視圖渲染時的代碼,比如在列表頁面中,我們需要對數據進行篩選后顯示,可以使用computed來計算出符合條件的列表,然后在頁面上直接使用這個計算結果進行渲染。
總之,computed是Vue響應式機制中非常重要的一個概念,它不僅可以方便地計算數據,還可以提高數據的計算效率,更適合在視圖中使用。