国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3——第十二章(Props)

這篇具有很好參考價(jià)值的文章主要介紹了Vue3——第十二章(Props)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、Props 聲明

  • 一個(gè)組件需要顯式聲明它所接受的 props,這樣 Vue 才能知道外部傳入的哪些是 props,哪些是透?jìng)?attribute
  • 在使用 <script setup> 的單文件組件中,props 可以使用 defineProps() 宏來聲明:
    Vue3——第十二章(Props)
  • 在沒有使用 <script setup> 的組件中,prop 可以使用 props 選項(xiàng)來聲明:
    Vue3——第十二章(Props)
  • 注意傳遞給 defineProps() 的參數(shù)和提供給 props 選項(xiàng)的值是相同的,兩種聲明方式背后其實(shí)使用的都是 prop 選項(xiàng)。
  • 除了使用字符串?dāng)?shù)組來聲明 prop 外,還可以使用對(duì)象的形式:
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)
  • 對(duì)于以對(duì)象形式聲明中的每個(gè)屬性,key 是 prop 的名稱,而值則是該 prop 預(yù)期類型的構(gòu)造函數(shù)。
  • 對(duì)象形式的 props 聲明不僅可以一定程度上作為組件的文檔,而且如果其他開發(fā)者在使用你的組件時(shí)傳遞了錯(cuò)誤的類型,也會(huì)在瀏覽器控制臺(tái)中拋出警告。
  • 如果你正在搭配 TypeScript 使用 <script setup>,也可以使用類型標(biāo)注來聲明 props:
    Vue3——第十二章(Props)

二、傳遞 prop 的細(xì)節(jié)

1、Prop 名字格式

  • 如果一個(gè) prop 的名字很長,應(yīng)使用 camelCase 形式,因?yàn)樗鼈兪呛戏ǖ?JavaScript 標(biāo)識(shí)符,可以直接在模板的表達(dá)式中使用,也可以避免在作為屬性 key 名時(shí)必須加上引號(hào)。
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)
  • 雖然理論上你也可以在向子組件傳遞 props 時(shí)使用 camelCase 形式 (使用 DOM 模板時(shí)例外),但實(shí)際上為了和 HTML attribute 對(duì)齊,我們通常會(huì)將其寫為 kebab-case 形式
    Vue3——第十二章(Props)
  • 對(duì)于組件名我們推薦使用 PascalCase,因?yàn)檫@提高了模板的可讀性,能幫助我們區(qū)分 Vue 組件和原生 HTML 元素。
  • 然而對(duì)于傳遞 props 來說,使用 camelCase 并沒有太多優(yōu)勢(shì),因此我們推薦更貼近 HTML 的書寫風(fēng)格。

2、靜態(tài) vs. 動(dòng)態(tài) Prop

  • 靜態(tài)值形式的 props:
    Vue3——第十二章(Props)
  • 相應(yīng)地,還有使用 v-bind 或縮寫 : 來進(jìn)行動(dòng)態(tài)綁定的 props
    Vue3——第十二章(Props)

3、傳遞不同的值類型

  • 任何類型的值都可以作為 props 的值被傳遞。
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)

4、使用一個(gè)對(duì)象綁定多個(gè) prop

  • 如果你想要將一個(gè)對(duì)象的所有屬性都當(dāng)作 props 傳入,你可以使用沒有參數(shù)的 v-bind,即只使用 v-bind 而非 :prop-name。
    Vue3——第十二章(Props)
  • 以及下面的模板:
    Vue3——第十二章(Props)
  • 而這實(shí)際上等價(jià)于:
    Vue3——第十二章(Props)

三、單向數(shù)據(jù)流

  • 所有的 props 都遵循著單向綁定原則,props 因父組件的更新而變化,自然地將新的狀態(tài)向下流往子組件,而不會(huì)逆向傳遞。
  • 這避免了子組件意外修改父組件的狀態(tài)的情況,不然應(yīng)用的數(shù)據(jù)流將很容易變得混亂而難以理解。
  • 另外,每次父組件更新后,所有的子組件中的 props 都會(huì)被更新到最新值,這意味著你不應(yīng)該在子組件中去更改一個(gè) prop。
  • 若你這么做了,Vue 會(huì)在控制臺(tái)上向你拋出警告:
    Vue3——第十二章(Props)

1、導(dǎo)致你想要更改一個(gè) prop 的需求通常來源于以下兩種場(chǎng)景:

  • prop 被用于傳入初始值;而子組件想在之后將其作為一個(gè)局部數(shù)據(jù)屬性。在這種情況下,最好是新定義一個(gè)局部數(shù)據(jù)屬性,從 props 上獲取初始值即可:
    Vue3——第十二章(Props)
  • 需要對(duì)傳入的 prop 值做進(jìn)一步的轉(zhuǎn)換。在這種情況中,最好是基于該 prop 值定義一個(gè)計(jì)算屬性:
    Vue3——第十二章(Props)

2、更改對(duì)象 / 數(shù)組類型的 props(盡可能避免這樣的更改)

  • 當(dāng)對(duì)象或數(shù)組作為 props 被傳入時(shí),雖然子組件無法更改 props 綁定,但仍然可以更改對(duì)象或數(shù)組內(nèi)部的值。
  • 這是因?yàn)?JavaScript 的對(duì)象和數(shù)組是按引用傳遞,而對(duì) Vue 來說,禁止這樣的改動(dòng)雖然可能,但有很大的性能損耗,比較得不償失。
  • 這種更改的主要缺陷是它允許了子組件以某種不明顯的方式影響父組件的狀態(tài),可能會(huì)使數(shù)據(jù)流在將來變得更難以理解。
  • 在最佳實(shí)踐中,你應(yīng)該盡可能避免這樣的更改,除非父子組件在設(shè)計(jì)上本來就需要緊密耦合。
  • 在大多數(shù)場(chǎng)景下,子組件應(yīng)該拋出一個(gè)事件來通知父組件做出改變。

四、Prop 校驗(yàn)

  • Vue 組件可以更細(xì)致地聲明對(duì)傳入的 props 的校驗(yàn)要求。
  • 比如我們上面已經(jīng)看到過的類型聲明,如果傳入的值不滿足類型要求,Vue 會(huì)在瀏覽器控制臺(tái)中拋出警告來提醒使用者。
  • 要聲明對(duì) props 的校驗(yàn),你可以向 defineProps() 宏提供一個(gè)帶有 props 校驗(yàn)選項(xiàng)的對(duì)象,例如:
    Vue3——第十二章(Props)
    Vue3——第十二章(Props)

一些補(bǔ)充細(xì)節(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-406461.html

  • 所有 prop 默認(rèn)都是可選的,除非聲明了 required: true
  • Boolean 外的未傳遞的可選 prop 將會(huì)有一個(gè)默認(rèn)值 undefined。
  • Boolean 類型的未傳遞 prop 將被轉(zhuǎn)換為 false。這可以通過為它設(shè)置 default 來更改——例如:設(shè)置為 default: undefined 將與非布爾類型的 prop 的行為保持一致。
  • 如果聲明了 default 值,那么在 prop 的值被解析為 undefined 時(shí),無論 prop 是未被傳遞還是顯式指明的 undefined,都會(huì)改為 default 值。
  • 當(dāng) prop 的校驗(yàn)失敗后,Vue 會(huì)拋出一個(gè)控制臺(tái)警告 (在開發(fā)模式下)。

到了這里,關(guān)于Vue3——第十二章(Props)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Rust】Rust學(xué)習(xí) 第十二章一個(gè) I/O 項(xiàng)目:構(gòu)建一個(gè)命令行程序

    【Rust】Rust學(xué)習(xí) 第十二章一個(gè) I/O 項(xiàng)目:構(gòu)建一個(gè)命令行程序

    本章既是一個(gè)目前所學(xué)的很多技能的概括,也是一個(gè)更多標(biāo)準(zhǔn)庫功能的探索。我們將構(gòu)建一個(gè)與文件和命令行輸入/輸出交互的命令行工具來練習(xí)現(xiàn)在一些你已經(jīng)掌握的 Rust 技能。 Rust 的運(yùn)行速度、安全性、單二進(jìn)制文件輸出和跨平臺(tái)支持使其成為創(chuàng)建命令行程序的絕佳選擇,

    2024年02月12日
    瀏覽(23)
  • Vue3通透教程【十二】TS類型聲明優(yōu)勢(shì)

    專欄介紹: 涼哥作為 Vue 的忠實(shí) 粉絲輸出過大量的 Vue 文章,應(yīng)粉絲要求開始更新 Vue3 的相關(guān)技術(shù)文章,Vue 框架目前的地位大家應(yīng)該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2023年04月20日
    瀏覽(28)
  • vue3-深入組件-組件注冊(cè)和props更多細(xì)節(jié)

    vue3-深入組件-組件注冊(cè)和props更多細(xì)節(jié)

    定義好的組件需要注冊(cè)才能被使用。 注冊(cè)方式有兩種 全局注冊(cè) 局部注冊(cè) 全局注冊(cè) .component() 方法,讓組件在當(dāng)前 Vue 應(yīng)用中全局可用。 在 main.ts 中 在 vue 中直接使用無需導(dǎo)入 效果: 全局注冊(cè)的組件可以在此應(yīng)用的任意組件的模板中使用,所有的子組件也可以使用全局注冊(cè)

    2024年01月25日
    瀏覽(51)
  • 【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用

    【vue2第十二章】ref和$refs獲取dom元素 和 vue異步更新與$nextTick使用

    為什么會(huì)有 ref 和 $refs? 因?yàn)樵趘ue頁面中使用dom查找元素,不管你是不是在子組件里面查找,查找的都是整個(gè)頁面的元素,如果你想查找單獨(dú)組件里面的元素是不容易實(shí)現(xiàn)的,除非把每個(gè)組件的class寫成獨(dú)一無二,但是在日常開發(fā)中,一個(gè)vue頁面不知道會(huì)有多少組件,所以出

    2024年02月09日
    瀏覽(21)
  • 兩周掌握Vue3(三):全局組件、局部組件、Props

    兩周掌握Vue3(三):全局組件、局部組件、Props

    代碼倉庫:跳轉(zhuǎn) 本博客對(duì)應(yīng)分支:03 Vue 3 中的全局組件是在應(yīng)用程序中全局注冊(cè)的組件,可以在任何地方使用,而不需要在每個(gè)組件中都單獨(dú)注冊(cè)。 在components目錄下創(chuàng)建全局組件MyGlobalComponent.vue: 在App.vue中嘗試使用我們定義和注冊(cè)的全局組件: 效果: 在 Vue 3 中,局部組

    2024年01月18日
    瀏覽(23)
  • vue3父組件異步props傳值,子組件接收不到值問題

    當(dāng)我們使用vue3進(jìn)行開發(fā)在創(chuàng)建組件的時(shí)候,子組件經(jīng)常需要調(diào)用父組件的數(shù)據(jù),那么這是就需要vue3的props進(jìn)行對(duì)父組件與子組件通信來達(dá)到傳值的效果 在使用props進(jìn)行父子組件通信時(shí),子組件無法成功渲染數(shù)據(jù),導(dǎo)致拿到數(shù)據(jù)為空問題 提示:這里填寫問題的分析: 在使用

    2024年02月11日
    瀏覽(21)
  • Vue3通透教程【十八】TS為組件的props標(biāo)注類型

    專欄介紹: 涼哥作為 Vue 的忠實(shí) 粉絲輸出過大量的 Vue 文章,應(yīng)粉絲要求開始更新 Vue3 的相關(guān)技術(shù)文章,Vue 框架目前的地位大家應(yīng)該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月16日
    瀏覽(25)
  • watch監(jiān)聽,解決Vue3父組件異步props傳值,子組件接收不到的問題

    watch監(jiān)聽,解決Vue3父組件異步props傳值,子組件接收不到的問題

    寫靜態(tài)數(shù)據(jù)的時(shí)候父組件傳值子組件接收并渲染是沒問題的,但當(dāng)父組件異步獲取數(shù)據(jù),子組件接收數(shù)據(jù)會(huì)晚于渲染,就會(huì)產(chǎn)生接收不到的問題,我在用echarts繪制圖表時(shí)圖表就直接不顯示 ?用watch監(jiān)聽props數(shù)據(jù)并在watch內(nèi)進(jìn)行賦值操作可解決該問題 直接上代碼 父組件,vue3語法

    2024年02月15日
    瀏覽(36)
  • vue3 組件TS 類型聲明

    要說今年最熱門的前端技術(shù),Vue3 和 TS 絕對(duì)榜上有名了。據(jù)了解,已經(jīng)有很多公司在使用 Vue3 + TS + Vite 開發(fā)新項(xiàng)目了。那么我們也不能落后,今天就給大家分享一下如何在 Vue3 組件中結(jié)合 Composition-Api 使用 TS 類型。如果有不會(huì)或者不熟的小伙伴,一起學(xué)起來吧! 當(dāng)使用 這被

    2023年04月08日
    瀏覽(28)
  • vue3實(shí)現(xiàn)父組件向子組件傳值并監(jiān)聽props改變觸發(fā)事件

    1. 父組件 向子組件 loginPhone 傳遞 tel 參數(shù)? phone 是在 reactive 定義的變量也可是是 ref 定義的變量 2. 子組件

    2024年02月05日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包