vue深度監聽時有時會出現新舊值相同的現象——原因及解析


1,數組或對象指針變化時會觸發視圖的重新渲染,

2,數組使用vue變異方法時,因為vue對變異方法做了包裝所以也能觸發視圖變化,

3,使用vue.$set改變其屬性也能觸發視圖渲染。

原因在官方文檔上有寫明:

注意:在變異 (不是替換) 對象或數組時,舊值將與新值相同,因為它們的引用指向同一個對象/數組。Vue 不會保留變異之前值的副本。

1,可以得出以下猜測,watch監聽的是數組或者對象的變動,非深度監聽,無法監聽屬性變化,而深度監聽時,數組或對象的任何變動都會導致指針的變化,變異時除外

2,什么是對象和數組的變異:即object.difineporperty()無法監聽到的數據變化(watch同樣依賴於object.difineporperty());

  參考以下文檔:

  數組變異方法和替換數組 https://blog.csdn.net/xie_qi_chao/article/details/104909859

  Vue源碼解析之數組變異 https://www.cnblogs.com/karthuslorin/p/10045326.html


免責聲明!

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



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