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

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

總結了十個Vue3超級實用但是很冷門的API

來源: 責編: 時間:2024-01-16 17:32:41 241觀看
導讀今天給大家分享幾個很少人用,但是又非常有用的 Vue3 的 API,廢話不多說,往下看吧。文章提示:下文的無效 不觸發視圖 不觸發響應式更新 不被追蹤 這些詞匯,想表達的意思是一樣的,意思都是不被追蹤。readonly顧名思義,就是只讀

今天給大家分享幾個很少人用,但是又非常有用的 Vue3 的 API,廢話不多說,往下看吧。6V528資訊網——每日最新資訊28at.com

文章提示:下文的無效 不觸發視圖 不觸發響應式更新 不被追蹤 這些詞匯,想表達的意思是一樣的,意思都是不被追蹤。6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

readonly

顧名思義,就是只讀的意思,如果你的數據被這個 API 包裹住的話,那么修改之后并不會觸發響應式,并且會提示警告:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

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

6V528資訊網——每日最新資訊28at.com

shallowRef

shallowRef 用來包住一個基礎類型或者引用類型,如果是基礎類型那么跟 ref 基本沒區別,如果是引用類型的話,那么直接改深層屬性是不能觸發響應式的,除非直接修改引用地址,如下:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

注意:改深層屬性能改數據,只是沒觸發響應式,所以當下一次響應式觸發的時候,你修改的深層數據會渲染到頁面上。6V528資訊網——每日最新資訊28at.com

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

6V528資訊網——每日最新資訊28at.com

shallowReactive

shallowReactive 用來包住一個引用類型,被包住后,修改第一層才會觸發響應式更新,也就是淺層的屬性,修改深層的屬性并不會觸發響應式更新。6V528資訊網——每日最新資訊28at.com

注意:改深層屬性能改數據,只是沒觸發響應式,所以當下一次響應式觸發的時候,你修改的深層數據會渲染到頁面上:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

shallowReactive 用的比較少,shallowReactive 的用處跟 shallowRef 比較像,都是為了讓一些比較大的數據能減少響應式更新,進而優化性能。6V528資訊網——每日最新資訊28at.com

toRef & toRefs

先說說 toRef 吧,我們平時在使用 reactive 的時候會有一個苦惱,那就是解構,比如看以下例子,我們為了少些一些代碼,解構出來了 name 并放到模板里渲染,但是當我們想改原數據的時候,發現 name 并不會更新,這就是解構出來基礎類型的苦惱。6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

這時我們可以使用 toRef,這個時候我們直接修改 name 也會觸發原數據的修改,修改原數據也會觸發 name 的修改:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

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

6V528資訊網——每日最新資訊28at.com

所以我們可以使用 toRefs 一次性解構:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

toRaw & markRaw & unref

toRaw 可以把一個響應式 reactive 轉成普通對象,也就是把響應式對象轉成非響應式對象:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

toRaw 主要用在回調傳參中,比如我封裝一個 hooks,我想要把 hooks 內維護的響應式變量轉成普通數據,當做參數傳給回調函數,可以用 toRaw:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

markRaw 可以用來標記響應式對象里的某個屬性不被追蹤,如果你的響應式對象里有某個屬性數據量比較大,但又不想被追蹤,你可以使用 markRaw:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

unref 相當于返回 ref 的 value:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

effectScope & onScopeDispose

effectScope 可以有兩個作用:6V528資訊網——每日最新資訊28at.com

  • 收集副作用
  • 全局狀態管理

(1) 收集副作用6V528資訊網——每日最新資訊28at.com

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

6V528資訊網——每日最新資訊28at.com

但是這么收集很麻煩, effectScope 能幫我們做到統一收集,并且通過 stop 方法來進行清除,且 stop 執行的時候會觸發 effectScope 內部的 onScopeDispose:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

我們可以利用 effectScope & onScopeDispose 來做一些性能優化,比如下面這個例子,我們封裝一個鼠標監聽的 hooks:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

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

6V528資訊網——每日最新資訊28at.com

(2) 全局狀態管理6V528資訊網——每日最新資訊28at.com

現在 Vue3 最火的全局狀態管理工具肯定是 Pinia 了,那么你們知道 Pinia 的原理是什么嗎?原理就是依賴了 effectScope:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

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

vueuse 中的 createGlobalState 就是為了這個而生:6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

6V528資訊網——每日最新資訊28at.com

provide & inject

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

6V528資訊網——每日最新資訊28at.com


6V528資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-62789-0.html總結了十個Vue3超級實用但是很冷門的API

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

上一篇: 花 15 分鐘把 Express.js 搞明白,全棧沒有那么難

下一篇: 2023 年頂級前端工具,你都用了哪些呢?

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優惠,到手價12999元,比發布價便宜了7000元,在大屏電視市場開卷。據了解,Redmi MAX 100
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • K6:面向開發人員的現代負載測試工具

    K6 是一個開源負載測試工具,可以輕松編寫、運行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設計為功能強大、可擴展且易于使用。k6 可用于測試各種應用程序,包括 Web
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • 馮提莫簽約抖音公會 前“斗魚一姐”消失在直播間

    來源:直播觀察提起“馮提莫”這個名字,很多網友或許聽過,但應該不記得她是哪位主播了。其實,作為曾經的“斗魚一姐”,馮提莫在游戲直播的年代影響力不輸于現
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據10月30日9to5 Mac 消息報道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯的評價,亮點包括行業領先的性能,令人印象深刻的電池續航,精美豐
Top 主站蜘蛛池模板: 扎兰屯市| 南陵县| 广平县| 清水县| 邵阳县| 隆德县| 彭州市| 九龙坡区| 高安市| 交城县| 仙桃市| 迁安市| 南充市| 沂源县| 柳江县| 竹北市| 响水县| 安塞县| 马边| 永安市| 台中市| 礼泉县| 贵州省| 镇江市| 本溪| 育儿| 甘泉县| 南乐县| 安徽省| 浮山县| 本溪| 中牟县| 尚义县| 边坝县| 清流县| 隆安县| 华容县| 康乐县| 泰来县| 榆中县| 山阴县|