Vue數據雙向綁定原理


一 Vue數據雙向綁定原理:

Vue數據雙向綁定原理是通過數據劫持結合發布者-訂閱者模式的方式來實現的,首先是對數據進行監聽,然后當監聽的屬性發生變化時則告訴訂閱者是否要更新,若更新就會執行對應的更新函數從而更新視圖。

二 在vue2.x版本中,數據劫持是用過Object.defineProperty這個API來實現:

Object.defineProperty的一些問題

  • 遞歸遍歷所有的對象的屬性,這樣如果我們數據層級比較深的話,是一件很耗費性能的事情
  • 只能應用在對象上,不能用於數組
  • 只能夠監聽定義時的屬性,不能監聽新加的屬性,這也就是為什么在vue中要使用Vue.set的原因,刪除也是同理 

三 在vue3版本中,使用了proxy去實現對象的監聽,避免了以上問題的出現,下面我們用proxy實現一個簡易版本的數據劫持:Proxy 可以理解成,在目標對象之前架設一層“攔截”,外界對該對象的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進行過濾和改寫。

  • proxy可以直接監聽數組的修改
  • proxy可以直接監聽屬性的新增和刪除
  • 在實現深度監聽的時候,只有在data對象的屬性被訪問的時候,才去對這個屬性做監聽處理,而不是一次性遞歸所有的。

 

推薦閱讀:

Vue如何實現數據劫持:https://zhuanlan.zhihu.com/p/111591503

 

 

 

 


免責聲明!

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



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