Vue數(shù)據(jù)雙向綁定是框架的一大優(yōu)勢,允許我們輕松地通過更改數(shù)據(jù)來觸發(fā)視圖變更。對于簡單的應(yīng)用場景來說,這個功能非常好用,但是在大應(yīng)用中,為了管理數(shù)據(jù)狀態(tài)和復(fù)雜邏輯,我們需要更多的控制權(quán)。Vue提供了computed和watch兩個核心選項幫助我們進行數(shù)據(jù)更改的處理。
// 定義一個 Vue 實例 var vm = new Vue({ el: '#app', data: { message: 'Hello World' }, computed: { reversedMessage: function() { return this.message.split('').reverse().join('') } }, watch: { message: function(newValue, oldValue) { console.log('新值:',newValue,'舊值:',oldValue); } } })
computed選項允許我們定義計算屬性,并將其用作模板中的數(shù)據(jù)。當(dāng)依賴的原始數(shù)據(jù)更改時,它們會自動重新計算。在上面的示例中,我們定義了一個名為reversedMessage的計算屬性,它返回message字段的反轉(zhuǎn)字符串。
watch選項監(jiān)聽被觀察的數(shù)據(jù),在數(shù)據(jù)更改時觸發(fā)特定的行為。在示例中,每當(dāng)message更改時,我們將其新舊值輸出到控制臺。
// 更改 message 值 vm.message = 'Hello Vue'
我們可以通過直接更改Vue實例中的數(shù)據(jù)來觸發(fā)computed和watch的對應(yīng)行為,從而更新應(yīng)用的狀態(tài)。在上面的代碼中,我們將message字段的值更改為 'Hello Vue'。
綜上所述,computed和watch選項可以幫助我們更好地管理Vue應(yīng)用中的數(shù)據(jù)狀態(tài)。通過定義計算屬性和數(shù)據(jù)觀察器,我們可以更細粒度地控制數(shù)據(jù)更改的處理。