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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

訴諸 Vue 組合式 API 解構(gòu) Props

來(lái)源: 責(zé)編: 時(shí)間:2024-01-15 09:21:43 200觀看
導(dǎo)讀大家好,這里是大家的林語(yǔ)冰。響應(yīng)式 API 賦予了組合式 API 一大坨可能性的同時(shí),代碼精簡(jiǎn)。雖然但是,我們應(yīng)該意識(shí)到響應(yīng)性的某些陷阱,比如丟失響應(yīng)性。在本文中,我們將學(xué)習(xí)如何正確解構(gòu) Vue 組件的 props,使得 props 不會(huì)丟

大家好,這里是大家的林語(yǔ)冰。Gmr28資訊網(wǎng)——每日最新資訊28at.com

響應(yīng)式 API 賦予了組合式 API 一大坨可能性的同時(shí),代碼精簡(jiǎn)。雖然但是,我們應(yīng)該意識(shí)到響應(yīng)性的某些陷阱,比如丟失響應(yīng)性。Gmr28資訊網(wǎng)——每日最新資訊28at.com

在本文中,我們將學(xué)習(xí)如何正確解構(gòu) Vue 組件的 props,使得 props 不會(huì)丟失響應(yīng)性。Gmr28資訊網(wǎng)——每日最新資訊28at.com

1. 解構(gòu) props

編譯器宏 defineProps() 可以輔助讀寫提供給 <script setup> 中的組件的 props:Gmr28資訊網(wǎng)——每日最新資訊28at.com

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

上述示例中,props 是一個(gè)響應(yīng)式對(duì)象,包含了提供給組件的 props。如果組件 props 變化了,props 響應(yīng)式對(duì)象也會(huì)隨之變化。Gmr28資訊網(wǎng)——每日最新資訊28at.com

讀寫 props 對(duì)象時(shí),我們要做的第一件事可能是,解構(gòu) props 對(duì)象,然后讀寫各個(gè)屬性。但當(dāng)我學(xué)習(xí) Vue 組合式 API 時(shí),令我大吃一驚的是,解構(gòu)的 props 丟失了響應(yīng)性!Gmr28資訊網(wǎng)——每日最新資訊28at.com

讓我們來(lái)看一個(gè)例子。下述組件 <EvenOdd :count="5"> 接受 count 屬性作為數(shù)字,并顯示一條消息,無(wú)論 count 是偶數(shù)還是奇數(shù)。Gmr28資訊網(wǎng)——每日最新資訊28at.com

在解構(gòu) props 對(duì)象 const { count } = defineProps() 之后,訪問該 count 屬性:Gmr28資訊網(wǎng)——每日最新資訊28at.com

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

單擊幾次增加按鈕。您會(huì)注意到,盡管 count 屬性不斷累加,但 "The number is even" 消息始終保持不變。Gmr28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)解構(gòu) props 對(duì)象 const { count } = defineProps() 時(shí),響應(yīng)性就會(huì)丟失。Gmr28資訊網(wǎng)——每日最新資訊28at.com

響應(yīng)性之所以會(huì)丟失,是因?yàn)樵诮鈽?gòu)時(shí) count 變異為具有原始值的變量(一個(gè)平平無(wú)奇的數(shù)字罷了)。但 Vue 的響應(yīng)性不能直接作用于原始值:Vue 必須訴諸 ref 或響應(yīng)式對(duì)象。Gmr28資訊網(wǎng)——每日最新資訊28at.com

粉絲請(qǐng)注意,在 Vue 中將原始值直接賦值給變量時(shí)要小心:此乃丟失響應(yīng)性的前提。Gmr28資訊網(wǎng)——每日最新資訊28at.com

2. 解決方案 1:使用“props”對(duì)象

第一個(gè)顯而易見的解決方案是,不要解構(gòu) props 對(duì)象,并使用屬性讀寫器直接讀寫 props: props.count。Gmr28資訊網(wǎng)——每日最新資訊28at.com

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

上述示例中,讀寫 computed() 內(nèi)的 props.count 可以在 props.count 變更時(shí)保留響應(yīng)性。props 對(duì)象是響應(yīng)式的,對(duì)其進(jìn)行任何變更都會(huì)被正確追蹤。Gmr28資訊網(wǎng)——每日最新資訊28at.com

這種方案的短板是,我們必須始終使用屬性讀寫器(比如 props.count)來(lái)讀寫 <script setup 中的 prop。Gmr28資訊網(wǎng)——每日最新資訊28at.com

解決方案 2:使用 toRefs() 輔助函數(shù)

如果您閱讀至此,我敢打賭您是解構(gòu)賦值的忠實(shí)粉絲,并且沒有它就活不下去。Gmr28資訊網(wǎng)——每日最新資訊28at.com

問題不大,那么您可以有意識(shí)地將 props 對(duì)象的每個(gè)屬性轉(zhuǎn)換為 ref,來(lái)保留解構(gòu) props 的響應(yīng)性。Vue 提供了一個(gè)特殊的輔助函數(shù) toRefs(reactiveObject) 來(lái)精準(zhǔn)完成此操作。Gmr28資訊網(wǎng)——每日最新資訊28at.com

其工作機(jī)制如下:Gmr28資訊網(wǎng)——每日最新資訊28at.com

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

toRefs(props) 返回一個(gè)對(duì)象,其中每個(gè)屬性都是對(duì)相應(yīng) prop 的 ref。Gmr28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在解構(gòu) const { count } = toRefs(props) 是安全的,因?yàn)?nbsp;count 是基于 count 屬性的 ref。現(xiàn)在,每次 count 屬性變更時(shí),count 的 ref 都會(huì)響應(yīng)屬性更改。Gmr28資訊網(wǎng)——每日最新資訊28at.com

將 count 作為 ref,在 computed() 內(nèi),我們必須使用 count.value 讀寫 prop 的值(因?yàn)?nbsp;count.value 是我們讀寫 ref 的值的方式)。Gmr28資訊網(wǎng)——每日最新資訊28at.com

我發(fā)現(xiàn)此方案可以方便地將 prop ref 作為參數(shù)傳遞給組合式函數(shù):比如 useMyComposable(count),并且不會(huì)丟失響應(yīng)性。Gmr28資訊網(wǎng)——每日最新資訊28at.com

否則,我會(huì)堅(jiān)持之前的方案,直接使用 props 對(duì)象讀寫 prop。Gmr28資訊網(wǎng)——每日最新資訊28at.com

4. 總結(jié)一下

粉絲請(qǐng)注意,通過應(yīng)用解構(gòu) const { propA, propB } = defineProps(),我們會(huì)丟失 props 的響應(yīng)性。Gmr28資訊網(wǎng)——每日最新資訊28at.com

解決響應(yīng)性丟失的方案主要有兩種:Gmr28資訊網(wǎng)——每日最新資訊28at.com

不解構(gòu) props,而是訴諸屬性讀寫器直接讀寫 props:比如 props.xxx/props.cat。Gmr28資訊網(wǎng)——每日最新資訊28at.com

有意識(shí)地使用 props 作為 refs 的對(duì)象:const { propA, propB } = toRefs(props)。這保留了解構(gòu)后的響應(yīng)性。然后我們可以將屬性作為獨(dú)立 ref 讀寫,比如 propsA.value/propB.value 等。Gmr28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-60978-0.html訴諸 Vue 組合式 API 解構(gòu) Props

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

上一篇: 數(shù)據(jù)科學(xué)不可或缺的十個(gè)Python庫(kù),讓你事半功倍

下一篇: Go語(yǔ)言常見錯(cuò)誤—Any 沒傳遞任何信息

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來(lái)預(yù)熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請(qǐng)期待。”同時(shí)
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無(wú)糖仙草烏龍茶510ml*15瓶平時(shí)要賣為79.9元,今日下單領(lǐng)取50元優(yōu)惠券,到手價(jià)為29.9元。產(chǎn)品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 之家push系統(tǒng)迭代之路

    前言在這個(gè)信息爆炸的互聯(lián)網(wǎng)時(shí)代,能夠及時(shí)準(zhǔn)確獲取信息是當(dāng)今社會(huì)要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動(dòng)拉"獲取信息的方式已不能滿足用
  • 三言兩語(yǔ)說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實(shí)現(xiàn)原理和應(yīng)用
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來(lái)源/華爾街科技眼對(duì)于絕大多數(shù)登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來(lái)源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動(dòng)已在近日順利收官。成立后一
  • iQOO 11S新品發(fā)布會(huì)

    iQOO將在7月4日19:00舉行新品發(fā)布會(huì),推出杭州亞運(yùn)會(huì)電競(jìng)賽事官方用機(jī)iQOO 11S。
  • SN570 NVMe SSD固態(tài)硬盤 價(jià)格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤,不僅閃存技術(shù)更為精進(jìn),性能也得到了進(jìn)一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 主站蜘蛛池模板: 饶平县| 芦山县| 定襄县| 柏乡县| 邹平县| 油尖旺区| 深泽县| 奈曼旗| 山西省| 井冈山市| 东明县| 大足县| 嘉禾县| 女性| 黄石市| 宜兰县| 家居| 横峰县| 光泽县| 孟津县| 康马县| 彩票| 江门市| 富宁县| 武威市| 长阳| 兴城市| 井冈山市| 呼玛县| 安图县| 克山县| 泊头市| 南涧| 渭南市| 崇仁县| 朝阳市| 济源市| 滨海县| 和硕县| 通许县| 东乡族自治县|