日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

有人抵觸Ref?有人抵觸Reactive?

來源: 責編: 時間:2024-05-07 09:15:05 242觀看
導(dǎo)讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎(chǔ)是進階的前提是我的初心~背景這幾天看到好多文章標題都是類似于:不用 ref 的 xx 個理由不用 reactive 的 xx 個理由歷數(shù) ref 的 xx 宗罪我就很不

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎(chǔ)是進階的前提是我的初心~HaF28資訊網(wǎng)——每日最新資訊28at.com

背景

這幾天看到好多文章標題都是類似于:HaF28資訊網(wǎng)——每日最新資訊28at.com

  • 不用 ref 的 xx 個理由
  • 不用 reactive 的 xx 個理由
  • 歷數(shù) ref 的 xx 宗罪

我就很不解,到底是什么原因?qū)е掠羞@兩批人:HaF28資訊網(wǎng)——每日最新資訊28at.com

  • 抵觸 ref 的人
  • 抵觸 reactive 的人

看了這些文章,我可以總結(jié)出他們的想法HaF28資訊網(wǎng)——每日最新資訊28at.com

抵觸 reactive 的人

抵觸 reactive 的人,他們的想法大概就是:HaF28資訊網(wǎng)——每日最新資訊28at.com

  • 1、Vue 官方推薦 ref
  • 2、reactive 有類型限制,ref 沒有
  • 3、reactive 使用不當會丟失響應(yīng)式,比如解構(gòu)
  • 4、reactive 無法修改整個對象的值

抵觸 ref 的人

抵觸 ref 的人,他們的想法大概就是:HaF28資訊網(wǎng)——每日最新資訊28at.com

  • 1、ref 的底層其實就是 reactive,用 ref 相當于多了一層,耗費性能
  • 2、ref 的 .value 用起來很麻煩,增加使用者心里負擔
  • 3、ref 到模板的時候會解掉 value 這一層,這時候也會耗費性能

把我整笑了~

說實話,看到這些文章,有點把我整笑了,其實你要用 ref 或者 reactive 都沒錯,但是沒比必要那么抵觸,編程很多時候并不是非黑即白啊。。。HaF28資訊網(wǎng)——每日最新資訊28at.com

既然 Vue3 推出了 ref 和 reactive,那就說明他們都有存在的必要,在項目中不同的場景去運用他們,我覺得才是最好的,而不是用一個不用另一個,不止這兩個,還有很多其他好用的 Vue3 APIHaF28資訊網(wǎng)——每日最新資訊28at.com

我想針對這兩批人的想法做一個回應(yīng):HaF28資訊網(wǎng)——每日最新資訊28at.com

回應(yīng) -> 抵觸 reactive 的人

  • 1、官方是推薦,不是抵觸
  • 2、reactive 既然有類型限制,那就在特定時候用 reactive 就行
  • 3、使用不當會丟失響應(yīng)式?那就是開發(fā)者對于 Vue3 API 的使用還不熟
  • 4、用 Object.assign 就可以修改整個對象的值

回應(yīng) -> 抵觸 ref 的人

  • 1、耗費性能的話,這么久了,也沒人貼出到底耗費了多少性能?
  • 2、.value 不麻煩,我覺得 .value 可以起到辨別響應(yīng)式和非響應(yīng)式數(shù)據(jù)的效果,而且現(xiàn)在編輯器都有插件提供的代碼補全了,多個 .value 也花不了多少時間吧?

靈活使用 Vue3 API 才是王道

其實在平時開發(fā)中,我覺得基本數(shù)據(jù)類型和數(shù)組,都可以用 ref 來管理,而對象的話可以使用 reactive 來管理,比如表單對象、狀態(tài)對象HaF28資訊網(wǎng)——每日最新資訊28at.com

其實 Vue3 不止有這兩個 API ,還有很多其他 API ,也很好用,大家只要去靈活使用它們,能讓你的Vue3 項目上一個層次HaF28資訊網(wǎng)——每日最新資訊28at.com

readonly

顧名思義,就是只讀的意思,如果你的數(shù)據(jù)被這個 API 包裹住的話,那么修改之后并不會觸發(fā)響應(yīng)式,并且會提示警告HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

readonly 的用途一般用于一些 hooks 暴露出來的變量,不想外界去修改,比如我封裝一個 hooks,這樣去做的話,那么外界只能用變量,但是不能修改變量,這樣大大保護了 hooks 內(nèi)部的邏輯~HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

shallowRef

shallowRef 用來包住一個基礎(chǔ)類型或者引用類型,如果是基礎(chǔ)類型那么跟 ref 基本沒區(qū)別,如果是引用類型的話,那么直接改深層屬性是不能觸發(fā)響應(yīng)式的,除非直接修改引用地址,如下:HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

注意:改深層屬性能改數(shù)據(jù),只是沒觸發(fā)響應(yīng)式,所以當下一次響應(yīng)式觸發(fā)的時候,你修改的深層數(shù)據(jù)會渲染到頁面上~HaF28資訊網(wǎng)——每日最新資訊28at.com

shallowRef 的用處主要用于一些比較大的但又變化不大的數(shù)據(jù),比如我有一個表格數(shù)據(jù),通過接口直接獲取,并且主要用在前端展示,需要修改一些深層的屬性,但是這些屬性并不需要立即表現(xiàn)在頁面上,比如以下例子,我只需要展示 name、age 字段,至于 isOld 字段并不需要展示,我想要計算 isOld 但是又不想觸發(fā)響應(yīng)式更新,所以可以用 shallowRef 包起來,進而減少響應(yīng)式更新,優(yōu)化性能HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

shallowReactive

shallowReactive 用來包住一個引用類型,被包住后,修改第一層才會觸發(fā)響應(yīng)式更新,也就是淺層的屬性,修改深層的屬性并不會觸發(fā)響應(yīng)式更新HaF28資訊網(wǎng)——每日最新資訊28at.com

注意:改深層屬性能改數(shù)據(jù),只是沒觸發(fā)響應(yīng)式,所以當下一次響應(yīng)式觸發(fā)的時候,你修改的深層數(shù)據(jù)會渲染到頁面上~HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

shallowReactive 用的比較少,shallowReactive 的用處跟 shallowRef 比較像,都是為了讓一些比較大的數(shù)據(jù)能減少響應(yīng)式更新,進而優(yōu)化性能HaF28資訊網(wǎng)——每日最新資訊28at.com

toRef & toRefs

先說說 toRef 吧,我們平時在使用 reactive 的時候會有一個苦惱,那就是解構(gòu),比如看以下例子,我們?yōu)榱松傩┮恍┐a,解構(gòu)出來了 name 并放到模板里渲染,但是當我們想改原數(shù)據(jù)的時候,發(fā)現(xiàn) name 并不會更新,這就是解構(gòu)出來基礎(chǔ)類型的苦惱HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

這時我們可以使用 toRef,這個時候我們直接修改 name 也會觸發(fā)原數(shù)據(jù)的修改,修改原數(shù)據(jù)也會觸發(fā) name 的修改HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

但是如果是屬性太多了,我們想一個一個去用 toRef 的話會寫很多代碼HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

所以我們可以使用 toRefs 一次性解構(gòu)HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

toRaw & markRaw & unref

toRaw 可以把一個響應(yīng)式 reactive 轉(zhuǎn)成普通對象,也就是把響應(yīng)式對象轉(zhuǎn)成非響應(yīng)式對象HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

toRaw 主要用在回調(diào)傳參中,比如我封裝一個 hooks,我想要把 hooks 內(nèi)維護的響應(yīng)式變量轉(zhuǎn)成普通數(shù)據(jù),當做參數(shù)傳給回調(diào)函數(shù),可以用 toRawHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

markRaw 可以用來標記響應(yīng)式對象里的某個屬性不被追蹤,如果你的響應(yīng)式對象里有某個屬性數(shù)據(jù)量比較大,但又不想被追蹤,你可以使用 markRawHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

unref 相當于返回 ref 的 valueHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

effectScope & onScopeDispose

effectScope 可以有兩個作用:HaF28資訊網(wǎng)——每日最新資訊28at.com

  • 收集副作用
  • 全局狀態(tài)管理

收集副作用

比如我們封裝一個共用的 hooks,為了減少頁面隱患,肯定會統(tǒng)一收集副作用,并且在組件銷毀的時候去統(tǒng)一消除,比如以下代碼:HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

但是這么收集很麻煩, effectScope 能幫我們做到統(tǒng)一收集,并且通過 stop 方法來進行清除,且 stop 執(zhí)行的時候會觸發(fā) effectScope 內(nèi)部的 onScopeDisposeHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

我們可以利用 effectScope & onScopeDispose 來做一些性能優(yōu)化,比如下面這個例子,我們封裝一個鼠標監(jiān)聽的 hooksHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

但是如果在頁面里調(diào)用多次的話,那么勢必會往 window 身上監(jiān)聽很多多余的事件,造成性能負擔,所以解決方案就是,無論頁面里調(diào)用再多次 useMouse,我們只往 window 身上加一個鼠標監(jiān)聽事件HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

全局狀態(tài)管理

現(xiàn)在 Vue3 最火的全局狀態(tài)管理工具肯定是 Pinia 了,那么你們知道 Pinia 的原理是什么嗎?原理就是依賴了 effectScopeHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

所以我們完全可以自己使用 effectScope 來實現(xiàn)自己的局部狀態(tài)管理,比如我們封裝一個通用組件,這個組件層級比較多,并且需要共享一些數(shù)據(jù),那么這個時候肯定不會用 Pinia 這種全局狀態(tài)管理,而是會自己寫一個局部的狀態(tài)管理,這個時候 effectScope 就可以排上用場了HaF28資訊網(wǎng)——每日最新資訊28at.com

vueuse 中的 createGlobalState 就是為了這個而生HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com

provide & inject

Vue3 用來提供注入的 API,主要是用在組件的封裝,比如那種層級較多的組件,且子組件需要依賴父組件甚至爺爺組件的數(shù)據(jù),那么可以使用 provide & inject,最典型的例子就是 Form 表單組件,可以去看看各個組件庫的源碼,表單組件大部分都是用 provide & inject 來實現(xiàn)的,比如 Form、Form-Item、Input這三個需要互相依賴對方的規(guī)則、字段名、字段值,所以用 provide & inject 會更好。具體用法看文檔吧~https://cn.vuejs.org/guide/components/provide-inject.htmlHaF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片HaF28資訊網(wǎng)——每日最新資訊28at.com


HaF28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-87036-0.html有人抵觸Ref?有人抵觸Reactive?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 總是做后臺管理系統(tǒng),到底要怎么提升自己呢?

下一篇: 每個開發(fā)者都必須要知道的,三個JS高效運算符:?. || ?? || ??=

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久综合中文色婷婷| 亚洲高清二区| 国产精品jvid在线观看蜜臀| 欧美午夜www高清视频| 国产精品亚洲综合一区在线观看| 国产偷自视频区视频一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲电影免费| 中文高清一区| 久久久xxx| 欧美日韩国产首页在线观看| 国产精品入口福利| 1024国产精品| 亚洲一二区在线| 久热精品视频在线观看一区| 欧美日韩精品二区| 在线成人激情| 久久亚洲春色中文字幕| 快射av在线播放一区| 欧美日韩国内自拍| 国产亚洲一级| 最近中文字幕日韩精品| 国产精品99久久久久久久久| 久久久久国产精品www| 欧美日本久久| 国内偷自视频区视频综合| 亚洲激情女人| 午夜精品视频一区| 欧美激情bt| 国产喷白浆一区二区三区| 亚洲第一精品福利| 亚洲欧美日韩国产中文 | 亚洲欧洲在线视频| 羞羞色国产精品| 欧美日韩精品在线播放| 狠狠入ady亚洲精品经典电影| 一区二区三区精品视频| 久久亚洲精品欧美| 欧美—级在线免费片| 欧美日韩一区二区高清| 国产精品美女久久久久av超清| 国模精品一区二区三区色天香| 一区二区福利| 美日韩丰满少妇在线观看| 国产精品素人视频| 9久re热视频在线精品| 久久亚洲精品一区二区| 国产精品免费一区二区三区在线观看 | 国产精品专区h在线观看| 亚洲久久一区| 免费在线国产精品| 国产一区二区三区不卡在线观看| 在线综合+亚洲+欧美中文字幕| 男女精品网站| 在线成人性视频| 久久久久久久网| 国产日韩欧美日韩| 午夜视频久久久久久| 欧美日韩在线一区| 国内精品久久久久影院优| 在线午夜精品| 欧美激情在线观看| 亚洲福利视频二区| 久久理论片午夜琪琪电影网| 国产伦精品一区二区三区免费迷| 中文亚洲欧美| 欧美日韩一区二区三区视频| 亚洲精品久久久久久久久久久久 | 久久久夜精品| 国产一区二区三区免费观看| 欧美一区二区三区电影在线观看| 国产精品老牛| 亚洲欧美不卡| 国产伦精品一区二区三区高清| 亚洲一区二区av电影| 国产精品福利影院| 亚洲欧美自拍偷拍| 国产日韩精品视频一区| 欧美一区二区三区在线观看| 国产嫩草一区二区三区在线观看 | 亚洲国产精彩中文乱码av在线播放| 久久精品国产99国产精品| 国产日韩欧美一区二区| 久久av资源网站| 激情综合自拍| 免费日韩av电影| 亚洲精品乱码久久久久久黑人| 欧美精品不卡| 亚洲看片免费| 欧美午夜精品| 午夜久久福利| 怡红院av一区二区三区| 欧美99久久| 99国产精品久久久久久久成人热| 欧美三级电影大全| 午夜精品视频在线| 国内久久视频| 欧美超级免费视 在线| 亚洲美女av网站| 国产精品国产自产拍高清av王其| 亚洲欧美福利一区二区| 国产视频一区二区在线观看| 久久裸体艺术| 亚洲免费电影在线观看| 国产精品国产a| 欧美在线免费观看视频| 在线观看亚洲一区| 欧美精品一区二区三区久久久竹菊| 一本色道久久综合狠狠躁的推荐| 国产精品久久久久久久免费软件| 欧美一区二区三区在线观看视频| 一区在线电影| 欧美日韩爆操| 欧美亚洲综合另类| 亚洲黄页一区| 国产精品第十页| 久久免费国产| 99天天综合性| 国产三级欧美三级日产三级99| 老牛影视一区二区三区| 在线一区二区日韩| 国产视频一区在线观看| 免费在线亚洲| 亚洲综合色噜噜狠狠| 一区精品在线| 欧美午夜理伦三级在线观看| 久久成人18免费网站| 亚洲欧洲午夜| 国产精品视频不卡| 女生裸体视频一区二区三区| 亚洲一线二线三线久久久| 一区二区亚洲精品| 国产精品国产三级国产普通话99| 久久久精品性| 在线视频亚洲欧美| 在线日本成人| 国产精品入口| 欧美顶级少妇做爰| 亚洲欧美另类在线观看| 亚洲国产国产亚洲一二三| 国产精品久久久久免费a∨大胸| 久久这里只精品最新地址| 亚洲视频观看| 亚洲国产精品电影在线观看| 国产精品毛片一区二区三区| 老牛国产精品一区的观看方式| 亚洲视频在线一区观看| 在线欧美日韩精品| 国产精品自在欧美一区| 欧美1区2区| 欧美中文在线视频| 一本色道久久综合精品竹菊| 极品av少妇一区二区| 国产精品免费一区豆花| 欧美顶级少妇做爰| 久久久久成人网| 亚洲砖区区免费| 亚洲精品字幕| 亚洲成人在线视频网站| 国产午夜精品久久久久久久| 欧美日韩在线播放三区四区| 久久综合综合久久综合| 欧美一区二区三区视频在线观看| 一本一道久久综合狠狠老精东影业 | 欧美精品97| 玖玖综合伊人| 久久国内精品自在自线400部| 在线一区免费观看| 亚洲精品日韩久久| 伊人成人开心激情综合网| 国产精品综合视频| 国产精品第2页| 欧美另类久久久品| 欧美成人午夜激情视频| 久久久久一区二区三区四区| 午夜日韩电影| 亚洲免费在线视频| 亚洲私拍自拍| 在线视频欧美日韩精品| 亚洲精品一级| 91久久在线视频| 亚洲黑丝一区二区| 亚洲第一偷拍| 在线观看日韩国产| 一区二区三区在线高清| 国产一区二区三区无遮挡| 国产欧美一区二区在线观看| 国产精品盗摄一区二区三区| 欧美日韩国产综合一区二区| 欧美久久影院| 欧美日韩一区高清| 欧美日本一区二区三区| 欧美精品一线| 欧美精品在线极品| 欧美—级在线免费片| 欧美激情精品久久久六区热门| 欧美 日韩 国产精品免费观看| 玖玖视频精品| 欧美福利电影网| 欧美极品在线播放| 欧美日本亚洲韩国国产| 欧美无乱码久久久免费午夜一区| 国产精品久久久久久久9999| 国产精品乱看|