Vue雙向綁定原理 Vue是如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定的?
Vue是如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定的?數(shù)據(jù)和視圖的綁定和同步最終體現(xiàn)在數(shù)據(jù)的讀寫過(guò)程中,也就是說(shuō)Object.defineProperty屬性()在數(shù)據(jù)集和get函數(shù)中定義。Vue中定義的函數(shù)是define
Vue是如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定的?
數(shù)據(jù)和視圖的綁定和同步最終體現(xiàn)在數(shù)據(jù)的讀寫過(guò)程中,也就是說(shuō)Object.defineProperty屬性()在數(shù)據(jù)集和get函數(shù)中定義。Vue中定義的函數(shù)是definereactive。在簡(jiǎn)化版的實(shí)現(xiàn)中,我只保留了一些基本特性:function definereactive(obj,key,值){
var dep=new dep()Object.defineProperty屬性(obj,key,{
enumerable:true,
configurable:true,
get:function reactiveGetter(){
if(部門目標(biāo)) {
部門依賴()
}
返回值
},
set:函數(shù)reactiveSetter(newVal){
if(value===newVal){
return
}else{
value=newVal部門通知讀取數(shù)據(jù)時(shí),如果有觀察者(觀察者將負(fù)責(zé)將新數(shù)據(jù)發(fā)送到視圖),則將觀察者綁定到當(dāng)前數(shù)據(jù)(部門依賴(),dep將當(dāng)前數(shù)據(jù)和所有觀察者之間的依賴關(guān)系關(guān)聯(lián)起來(lái)是一個(gè)檢查和記錄依賴關(guān)系的過(guò)程。為數(shù)據(jù)賦值時(shí),如果數(shù)據(jù)發(fā)生變化,將通知所有觀察者部門通知())。這樣,即使我們手動(dòng)更改數(shù)據(jù),框架也可以自動(dòng)將數(shù)據(jù)與視圖同步。
詳解vue的雙向綁定原理及實(shí)現(xiàn)?
原理是:在數(shù)據(jù)呈現(xiàn)中,使用prop呈現(xiàn)數(shù)據(jù)將prop綁定到子組件自己的數(shù)據(jù),修改數(shù)據(jù)時(shí)修改自己的數(shù)據(jù)以替換子組件自己數(shù)據(jù)的更改,并觸發(fā)事件通知父組件更改綁定到prop的數(shù)據(jù)。這樣做的好處是:當(dāng)父組件的數(shù)據(jù)發(fā)生變化時(shí),存儲(chǔ)在prop中的子組件的數(shù)據(jù)不會(huì)被修改,只以子組件的數(shù)據(jù)為媒介完成對(duì)prop的雙向修改。
前端面試被問(wèn)到,vue實(shí)現(xiàn)數(shù)據(jù)雙向綁定,原理是啥?
原理如下:
數(shù)據(jù)渲染時(shí)使用prop渲染數(shù)據(jù)
將prop綁定到子組件自己的數(shù)據(jù),修改數(shù)據(jù)時(shí)修改自己的數(shù)據(jù)替換prop
觀察子組件自己數(shù)據(jù)的變化,并觸發(fā)事件通知父組件更改綁定到prop的數(shù)據(jù)
這樣做的好處是:當(dāng)父組件的數(shù)據(jù)更改時(shí),存儲(chǔ)prop的子組不會(huì)被修改,組件數(shù)據(jù)只作為媒體完成對(duì)prop的雙向修改。