場景:父組件發生數據變化,動態的傳遞給子組件,子組件實時刷新視圖數組
解決方法:須要在子組件watch中(監聽)父組件數據的變化函數
在子組件中使用watch應該注意的問題:this
1.watch監聽普通類型的數據:spa
data() { return { frontPoints: 0 } }, watch: { frontPoints(newValue, oldValue) { console.log(newValue) } }
2.watch監聽數組類型 的數據code
data() { return { winChips: new Array(11).fill(0) } }, watch: { winChips: { handler(newValue, oldValue) { for (let i = 0; i < newValue.length; i++) { if (oldValue[i] != newValue[i]) { console.log(newValue) } } }, deep: true } }
3.watch監聽對象類型的數據對象
data() { return { bet: { pokerState: 53, pokerHistory: 'local' } } }, watch: { bet: { handler(newValue, oldValue) { console.log(newValue) }, deep: true } }
4.watch監聽對象的具體屬性:(結合computed)blog
data() { return { bet: { pokerState: 53, pokerHistory: 'local' } } }, computed: { pokerHistory() { return this.bet.pokerHistory } }, watch: { pokerHistory(newValue, oldValue) { console.log(newValue) } }
tips: 只要bet中的屬性發生變化(可被監測到的),便會執行handler函數;
若是想監測具體的屬性變化,如pokerHistory變化時,才執行handler函數,則能夠利用計算屬性computed作中間層。
ip