關於__ob__: Observer 遇到的一些問題和現象


關於__ob__: Observer 遇到的一些問題和現象:

賦值的對象屬性沒有__ob__: Observer,所以無法觸發響應式渲染更新

 

 

相關資料:https://cn.vuejs.org/v2/api/#data

Vue 實例的數據對象。Vue 會遞歸地把 data 的 property 轉換為 getter/setter,從而讓 data 的 property 能夠響應數據變化。對象必須是純粹的對象 (含有零個或多個的 key/value 對):瀏覽器 API 創建的原生對象,原型上的 property 會被忽略。大概來說,data 應該只能是數據 - 不推薦觀察擁有狀態行為的對象。

一旦觀察過,你就無法在根數據對象上添加響應式 property。因此推薦在創建實例之前,就聲明所有的根級響應式 property。

實例創建之后,可以通過 vm.$data 訪問原始數據對象。Vue 實例也代理了 data 對象上所有的 property,因此訪問 vm.a 等價於訪問 vm.$data.a

以 _ 或 $ 開頭的 property 不會被 Vue 實例代理,因為它們可能和 Vue 內置的 property、API 方法沖突。你可以使用例如 vm.$data._property 的方式訪問這些 property。

當一個組件被定義,data 必須聲明為返回一個初始數據對象的函數,因為組件可能被用來創建多個實例。如果 data 仍然是一個純粹的對象,則所有的實例將共享引用同一個數據對象!通過提供 data 函數,每次創建一個新實例后,我們能夠調用 data 函數,從而返回初始數據的一個全新副本數據對象。

如果需要,可以通過將 vm.$data 傳入 JSON.parse(JSON.stringify(...)) 得到深拷貝的原始數據對象。

附vue響應式原理:

https://cn.vuejs.org/v2/guide/reactivity.html


免責聲明!

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



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