vue中我改變了data中的一個值,但現在視圖上沒有實時更新,請問我怎么拿到更新后的值?


  • Vue在數據初始化的時候會對data,computed,watcher中的屬性進行依賴收集,如果支持proxy,則直接使用proxy進行攔截,好處是可以深層次的進行攔截,如果不支持proxy,則使用object.defineProperty來進行數據攔截依賴收集。但是object.defineProperty無法做到深層次的監聽,所以對屬性進行遞歸算法去實現依賴收集,如果在初始化沒有將屬性收集進去,則很有可能沒有收集到依賴,這種情況則需要使用$set, 在$set中重新進行依賴收集。    
  • 還有一種情況是直接操作數組的下標,也不會發生dom更新,其實vue對數組的push, pop,unshift, shift,splice,sort,reverse這幾個方法進行了重新定義,如果使用這幾個方法對數組進行操作,是可以監聽到數據變化的。    
  • 還有一種,就是你的數據變更在dom掛載之前,比如,數組要放到一個容器里渲染,可是容器還沒有掛載出來。導致找不到dom,這種情況就需要使用$nextTick。


免責聲明!

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



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