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


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

解決方法:需要在子組件watch中(監聽)父組件數據的變化

在子組件中使用watch應該注意的問題:

1.watch監聽普通類型的數據:

data() {  
    return {  
        frontPoints: 0      
    }  
},  
watch: {  
    frontPoints(newValue, oldValue) {  
        console.log(newValue)  
    }  
}  


2.watch監聽數組類型 的數據

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)

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做中間層。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM