您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
04 vue發布訂閱模式(vue的數據雙向綁定是怎么實現的)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-19 23:58:14【】0人已围观
简介會返回一個Boolean值,用于判斷屬性是否設置成功。完事后將handler導出,然后在reactive中引入即可。測試幾組對象貌似沒啥問題,其實是有一個坑,這個坑也跟數組有關。如上例子,如果我們選擇
完事后將 handler 導出,然后在 reactive 中引入即可。
測試幾組對象貌似沒啥問題,其實是有一個坑,這個坑也跟數組有關。
如上例子,如果我們選擇代理數組,在 setHandler 中打印其 key 和 value 的話會得到 3 4 , length 4 這兩組值:
如果不作處理,那么會導致如果更新視圖的話,則會觸發兩次,這肯定是不允許的,因此,我們需要將區分新增和修改這兩種操作。
Vue3 中是通過判斷 target 是否存在該屬性來區分是新增還是修改操作,需要借助一個工具方法 —— hasOwnProperty 。
這里我們將上述的 createSetter 方法修改如下:
如此一來,我們調 push 方法的時候,就只會觸發一次更新了,非常巧妙的避免了無意義的更新操作。
effect.js
光上述構造響應式對象并不能完成響應式的操作,我們還需要一個非常重要的方法 effect ,它會在初始化執行的時候存儲跟其有關的數據依賴,當依賴數據發生變化的時候,則會再次觸發 effect 傳遞的函數。
其基本雛形如下,入參是一個函數,還有個可選參數 options 方便后面計算屬性等使用,暫時不考慮:
createReactiveEffect 就是為了將 fn 變成響應式函數,監控數據變化,執行 fn 函數,因此該函數是一個高階函數。
createReactiveEffect 將原來的 fn 轉變成一個 reactvieEffect , 并將當前的 effect 掛到全局的 activeEffect 上,目的是為了一會與當前所依賴的屬性做好對應關系。
我們必須要將依賴屬性構造成 { prop : [effect,effect] } 這種結構,才能保證依賴屬性變化的時候,依次去觸發與之相關的 effect ,因此,需要在 get 屬性的時候,做屬性的依賴收集,將屬性與 effect 關聯起來。
依賴收集 —— track
在獲取對象的屬性時,會觸發 getHandler ,再次做屬性的依賴收集,即 Vue2 中的發布訂閱。
在 setHandler 中獲取屬性的時候,做一次 track(target, key) 操作。
整個 track 的數據結構大概是這樣
目的就是將 target , key , effect 之間做好對應的關系映射。
打印 targetMap 的結構如下:
**觸發更新 —— trigger
**上述已經完成了依賴收集,剩下就是監控數據變化,觸發更新操作,即在 setHandler 中添加 trigger 觸發操作。
這樣一來,獲取數據的時候通過 track 進行依賴收集,更新數據的時候再通過 trigger 進行更新,就完成了整個數據的響應式操作。
再回頭看看我們先前提到的例子:
控制臺會依次打印 Hello ***** effect ***** 以及 World ***** effect ***** , 分別是首次渲染觸發跟更新數據重渲染觸發,至此功能實現!
整體來說, Vue3 相比于 Vue2 在很多方面都做了調整,數據的響應式只是冰山一角,但是可以看出尤大團隊非常巧妙的利用了 Proxy 的特點以及 es6 的數據結構和方法。另外, Composition API 的模式跟 React 在某些程度上有異曲同工之妙,這種設計模式讓我們在實際開發使用中更加的方法快捷,值得我們去學習,加油!
最后附上倉庫地址 github ,歡迎各位大佬批評斧正~
很赞哦!(4376)
相关文章
- youtube music download online video標簽屬性(如何在youtubemusic中創建快捷指令)
- 01 萬達集團海外投資現狀(王健林宣布萬達徹底告別房地產,你怎么看?)
- 01 三國殺買粉絲買粉絲充值在哪里(如何查看三國殺買粉絲支付憑證?)
- 01 三亞學院國際經濟與貿易中外合作要出國嗎(2022年三亞學院專升本招生專業介紹:國際經濟與貿易專業?)
- youtube music download pc convert(如何讓YTmusic在后臺播放)
- 01 三個小時播放量不到500(為什么抖音視頻每次都在500左右的播放量?)
- 01 七天學堂買粉絲買粉絲免費查成績(七天網絡查詢成績入口查詢成績入口2022)
- 01 三亞上海外國語大學附屬外國語學校(三亞上海世外崖州區外國語學校怎么樣)
- youtube music download online converter翻譯(如何讓YTmusic在后臺播放)
- youtube music download pc free online convert(youtube music下載的文件在哪里)
热门文章
站长推荐
01 七號貝殼海外官方旗艦店怎么樣(七號貝殼海外官方旗艦店是真的嗎)
youtube music download online apple官網查序列號(youtube music下載的文件在哪里)
youtube music download free online什么意思(online是什么意思 詳解online的定義和用法?)
01 萬達海外債券(為什么王健林負債三千個億不還?)
youtube music download windows app store卸載(今日新聞淺談:Youtube Music 也加入串流音樂服務大混戰)
youtube music download online converter什么意思(如何在youtubemusic中創建快捷指令)
youtube music download online mp3轉換器在線(今日新聞淺談:Youtube Music 也加入串流音樂服務大混戰)
01 萬達海外投資轉移資產(萬達清空海外地產,該公司這么做的原因是什么?)