



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第詳解Vue3的響應(yīng)式原理解析Vue3響應(yīng)式原理剖析
vue3使用ES6的Proxy特性來(lái)解決這些問(wèn)題。
functionreactive(obj){
if(typeofobj!=='object'obj!=null){
returnobj
//Proxy相當(dāng)于在對(duì)象外層加攔截
///#docs/proxy
constobserved=newProxy(obj,{
get(target,key,receiver){
//Reflect用于執(zhí)行對(duì)象默認(rèn)操作,更規(guī)范、更友好
//Proxy和Object的方法Reflect都有對(duì)應(yīng)
///#docs/reflect
constres=Reflect.get(target,key,receiver)
console.log(`獲取${key}:${res}`)
returnres
set(target,key,value,receiver){
constres=Reflect.set(target,key,value,receiver)
console.log(`設(shè)置${key}:${value}`)
returnres
deleteProperty(target,key){
constres=Reflect.deleteProperty(target,key)
console.log(`刪除${key}:${res}`)
returnres
returnobserved
//代碼測(cè)試
conststate=reactive({
foo:'foo',
bar:{a:1}
//1.獲取
state.foo//ok
//2.設(shè)置已存在屬性
state.foo='fooooooo'//ok
//3.設(shè)置不存在屬性
state.dong='dong'//ok
//4.刪除屬性
deletestate.dong//ok
嵌套對(duì)象響應(yīng)式
測(cè)試:嵌套對(duì)象不能響應(yīng)
//設(shè)置嵌套對(duì)象屬性
react.bar.a=10//nook
添加對(duì)象類(lèi)型遞歸
//提取幫助方法
constisObject=val=val!==nulltypeofval==='object'
functionreactive(obj){
//判斷是否對(duì)象
if(!isObject(obj)){
returnobj
constobserved=newProxy(obj,{
get(target,key,receiver){
//...
//如果是對(duì)象需要遞歸
returnisObject(res)reactive(res):res
//...
避免重復(fù)代理
重復(fù)代理,比如
reactive(data)//已代理過(guò)的純對(duì)象
reactive(react)//代理對(duì)象
解決方式:將之前代理結(jié)果緩存,get時(shí)直接使用
consttoProxy=newWeakMap()//形如obj:observed
consttoRaw=newWeakMap()//形如observed:obj
functionreactive(obj){
//...
//查找緩存,避免重復(fù)代理
if(toProxy.has(obj)){
returntoProxy.get(obj)
if(toRaw.has(obj)){
returnobj
constobserved=newProxy(...)
//緩存代理結(jié)果
toProxy.set(obj,observed)
toRaw.set(observed,obj)
returnobserved
//測(cè)試效果
console.log(reactive(data)===state
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)班組績(jī)效管理制度
- 圍堰雨水排放管理制度
- 公司銀行借款管理制度
- 員工血壓檢測(cè)管理制度
- 公司防疫消殺管理制度
- 單位案件防范管理制度
- 公路設(shè)計(jì)中的水文條件分析試題及答案
- 公司技術(shù)職稱(chēng)管理制度
- 創(chuàng)新成果評(píng)審管理制度
- 提高軟件測(cè)試能力的2025年考試技巧試題及答案
- 山西省2023年對(duì)口升學(xué)考試數(shù)學(xué)真題
- 國(guó)家開(kāi)放大學(xué)行管本科《城市管理學(xué)》期末紙質(zhì)考試總題庫(kù)2025春期版
- 《孫權(quán)勸學(xué)》歷年中考文言文閱讀試題40篇(含答案與翻譯)(截至2024年)
- 軍隊(duì)文職招聘(臨床醫(yī)學(xué))近年考試真題題庫(kù)(含真題、典型題)(重點(diǎn)題)
- 《偽裝技術(shù)的簡(jiǎn)介》課件
- 深度學(xué)習(xí)在色度圖識(shí)別中的應(yīng)用-深度研究
- 首屆全國(guó)新型電力系統(tǒng)(配電自動(dòng)化)職業(yè)技能競(jìng)賽參考試題庫(kù)(含答案)
- 2024年四級(jí)保健按摩師職業(yè)鑒定備考試題庫(kù)(含答案)
- 加油站的物資采購(gòu)與庫(kù)存管理
- 《藥包材變更研究技術(shù)指南》(T-CNPPA 3009-2020)
- 2025年中國(guó)演藝行業(yè)深度分析、投資前景、趨勢(shì)預(yù)測(cè)報(bào)告(智研咨詢(xún))
評(píng)論
0/150
提交評(píng)論