Vue中的computed屬性具有響應(yīng)式的特性,即當(dāng)依賴的數(shù)據(jù)發(fā)生變化時,computed會自動重新計算并更新。
var vm = new Vue({
el: '#app',
data: {
firstName: 'John',
lastName: 'Doe'
},
computed: {
fullName: function() {
return this.firstName + ' ' + this.lastName;
}
}
})
在上面的代碼中,computed屬性fullName依賴于firstName和lastName這兩個data屬性,當(dāng)它們發(fā)生變化時,computed會重新計算返回新的值。
computed屬性還有一個重要的應(yīng)用場景,就是監(jiān)聽Vuex store中的state。在Vue組件中通過mapState將state映射為computed屬性時,computed屬性會自動監(jiān)聽state變化并更新。
import { mapState } from 'vuex';
export default{
computed: mapState([
'userName',
'userAge'
])
}
上述代碼中,將Vuex store中的userName和userAge兩個state映射為computed屬性,當(dāng)state發(fā)生變化時,computed會更新。