Vue_watch深度監聽的正確開啟方式

.醬發表於2018-08-09

watch深度監聽的正確開啟方式

在大部分日常開發中,我們經常需要使用watch監聽資料變化,但如果想監聽的資料層級比較深,往往結果並不盡如人意,本文介紹兩種深度監聽資料變化的方法

1.藉助deep: true深度監聽

watch: {
    obj: {
    	// 資料變化時執行的邏輯程式碼
        handler(newName, oldName) {
            console.log('obj.a changed');
        },
        // 開啟深度監聽
        deep: true
    }
}
複製程式碼

watch監聽物件,同時用**deep: true**深度監聽,此時只有物件中的某個值發生改變就會觸發

2.藉助computed計算屬性監聽

// 通過計算屬性,計算出需要監聽的資料
computed: {
    changed: function () {
        return this.obj.changed
    }
},

// 不通過deep,仍然可以深度監聽計算出來的資料
watch: {
    changed: function () {
        console.log(this.changed)
    }
}
複製程式碼

通過computed計算屬性的配合,先計算出需要監聽的屬性後用watch監聽

從效能以及可讀性考慮,個人比較推薦第二種方式

相關文章