vue的響應式

2021-10-24 03:14:23 字數 1746 閱讀 4808

資料變化,頁面就會重新渲染

>

}div

>

const vm =

newvue(}

);

這時候我們在頁面的控制台裡面修改資料

vm.msg =

"hello vue"

這時候我們發現,頁面改變了。

為什麼data裡面的資料會直接出現在vue例項物件中?

當建立vue例項時,vue會將data中的資料**給vue例項,目的是為了實現響應式,監控資料變化,執行監聽函式。

更改的資料必須是存在的資料,否則不能重新渲染頁面,也必須是頁面上渲染過的資料,否則也不能重新渲染

vue更新dom的操作是非同步執行的,只要偵聽到資料變化,將開啟乙個非同步佇列,如果乙個資料被多次變更,那麼只會被推入到佇列中一次,這樣可以避免不必要的計算和dom操作。

可以證明,更改資料後,vue開啟了乙個非同步佇列。vm.$el是vue掛載的元素。

可以使用vm.$nexttick或者vue.nexttick。在頁面重新渲染後,會立刻執行

這兩個函式。這兩個函式也可以當做promise使用

const vm =

newvue(}

);vm.msg =

"hello vue"

;console.

log(vm.msg)

;vm.

$nexttick((

)=>);

vue.

nexttick((

)=>

)

vue.nexttick內部函式的this指向window

vm.$nexttick內部函式的this指向vue例項物件

利用陣列的變異方法:push、pop、shift、unshift、splice、sort、reverse。這些方法不是原生js的方法,而是vue重寫過後的方法

利用vm.$set或者vue.set方法

利用vm.$delete或者vue.delete

利用索引直接設定陣列項,修改陣列長度,新增或刪除物件都不是響應式的

>}}

div>

const vm =

newvue(}});

如果我們通過下面的方式改變陣列或物件,那麼頁面不會重新渲染。

vm.people[3]

="小白"

;vm.people.length =0;

vm.obj.wife =

"小紅"

;delete vm.obj.age;

vue響應式布局 Vue 響應式原理

vue2 的資料偵測 在 src observer 目錄裡面,元件例項在初始化時,會呼叫 observe 函式處理 data function initdata vm observe 改寫了所有物件屬性的 getter setter 和陣列原型上的 7 個會改寫陣列方法,從而讓 data 變成可響應...

Vue的響應式

vue2中,實現響應式的原理是使用es5的object.defineproperty,重寫了幾乎所有屬性的getter和setter。object.defineproperty 1.1 可配置的屬性 const object1 object.defineproperty object1,proper...

vue的響應式系統 和響應式原理

web m v 組成 mvc 發生在後端 mvc 是一種使用 mvc model view controller 模型 檢視 控制器 設計建立 web 應用 model 模型 表示應用程式核心 比如資料庫記錄列表 view 檢視 顯示資料 資料庫記錄 controller 控制器 處理輸入 寫入資料...