Vue父組件向子組件傳遞一個動態的值,子組件如何保持實時更新實時更新?

場景:父組件發生數據變化,動態的傳遞給子組件,子組件實時刷新視圖數組

解決方法:須要在子組件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

相關文章
相關標籤/搜索