欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue 3中的defineEmits()和defineProps()使用小結(jié)

 更新時(shí)間:2024年04月29日 10:15:39   作者:aike13ky  
defineProps()和defineEmits()是Vue 3中Composition API的重要組成部分,它們分別用于定義組件接收的屬性和觸發(fā)的事件,本文給大家介紹Vue 3中的defineEmits()和defineProps()解析,感興趣的朋友跟隨小編一起看看吧

前言 

       在Vue 3中,Composition API的引入為開發(fā)者帶來了更靈活、更強(qiáng)大的組件開發(fā)體驗(yàn)。其中,defineEmits()defineProps()這兩個(gè)函數(shù)在<script setup>語(yǔ)法中扮演著至關(guān)重要的角色,它們分別用于定義組件觸發(fā)的事件和接收的屬性,從而實(shí)現(xiàn)了組件間的有效通信。

一、defineProps():明確接收外部數(shù)據(jù)

        在Vue中,組件間的數(shù)據(jù)傳遞通常通過props實(shí)現(xiàn)。而在Vue 3的Composition API中,defineProps()函數(shù)則用于在<script setup>中聲明組件期望接收的props。

        通過defineProps(),我們可以明確指定每個(gè)prop的類型、默認(rèn)值以及驗(yàn)證函數(shù),從而確保組件接收到的數(shù)據(jù)符合預(yù)期。這不僅提高了代碼的可讀性和可維護(hù)性,還為TypeScript用戶提供了類型推導(dǎo)功能,進(jìn)一步增強(qiáng)了代碼的健壯性。

        通俗一點(diǎn)講,它是用于聲明組件期望從父組件接收的 props(屬性)。這些 props 是父組件在使用子組件時(shí)通過屬性綁定的方式傳遞的數(shù)據(jù)。

        當(dāng)你在子組件中使用 defineProps 來聲明 props 時(shí),你實(shí)際上是在定義組件的接口,告訴 Vue 和其他開發(fā)者這個(gè)組件需要哪些 props,以及這些 props 的類型和可能的驗(yàn)證規(guī)則。這樣,父組件就可以按照這些聲明來傳遞相應(yīng)的數(shù)據(jù)給子組件。

示例:

//子組件
<script setup>  
import { defineProps } from 'vue'  
const props = defineProps({  
  title: String,  
  isVisible: Boolean  
})  
</script>
//父組件
<template>  
  <MyComponent :title="myTitle" :isVisible="shouldShow" />  
</template>  
<script>  
import MyComponent from './MyComponent.vue'  
export default {  
  components: {  
    MyComponent  
  },  
  data() {  
    return {  
      myTitle: 'Hello from Parent',  
      shouldShow: true  
    }  
  }  
}  
</script>

        在這個(gè)例子中,父組件通過屬性綁定 :title="myTitle" 和 :isVisible="shouldShow" 將數(shù)據(jù)傳遞給子組件 MyComponent。子組件中的 defineProps 聲明確保了這些 props 的存在,并且它們可以在組件的模板或 setup 函數(shù)中被正確引用和使用。

二、defineEmits():定義組件觸發(fā)的事件

        defineProps()相對(duì)應(yīng)的是defineEmits(),它用于在<script setup>中聲明組件可以觸發(fā)的事件。通過定義事件,組件可以主動(dòng)向父組件或其他監(jiān)聽者發(fā)送消息,從而實(shí)現(xiàn)組件間的通信。

        與defineProps()類似,defineEmits()也支持類型推導(dǎo)和驗(yàn)證功能。這意味著我們可以為事件定義類型,并在觸發(fā)事件時(shí)進(jìn)行參數(shù)驗(yàn)證,以確保數(shù)據(jù)的正確性和一致性。

        通俗一點(diǎn)來說,有時(shí)候,子組件需要告訴父組件某件事情發(fā)生了,比如用戶點(diǎn)擊了一個(gè)按鈕,或者子組件內(nèi)部的數(shù)據(jù)有了變化。這時(shí),子組件就可以“發(fā)射”或“觸發(fā)”一個(gè)事件,父組件則可以監(jiān)聽這個(gè)事件,并做出相應(yīng)的反應(yīng)。

代碼示例:

<script setup>  
import { defineEmits } from 'vue'  
const emit = defineEmits(['update'])  
function increment() {  
  const count = /* 獲取或計(jì)算當(dāng)前計(jì)數(shù) */;  
  emit('update', count + 1);  
}  
</script>  
<template>  
  <div>  
    <p>Count: {{ count }}</p>  
    <button @click="increment">Increment</button>  
  </div>  
</template>

        在這個(gè)例子中,我們使用了defineEmits()來聲明了一個(gè)名為update的事件。當(dāng)點(diǎn)擊按鈕時(shí),increment()函數(shù)會(huì)被調(diào)用,它觸發(fā)了一個(gè)update事件并傳遞了一個(gè)更新后的計(jì)數(shù)作為參數(shù)。父組件可以通過監(jiān)聽這個(gè)事件來接收這個(gè)計(jì)數(shù),并據(jù)此更新自己的狀態(tài)或執(zhí)行其他操作。

三、總結(jié)

  defineProps()defineEmits()是Vue 3中Composition API的重要組成部分,它們分別用于定義組件接收的屬性和觸發(fā)的事件。通過這兩個(gè)函數(shù),我們可以實(shí)現(xiàn)組件間的清晰、明確的數(shù)據(jù)傳遞和通信,從而提高代碼的可讀性、可維護(hù)性和健壯性。無論是使用純JavaScript還是TypeScript進(jìn)行開發(fā),它們都能為我們提供強(qiáng)大的類型推導(dǎo)和驗(yàn)證功能,幫助我們構(gòu)建更加可靠和高效的Vue應(yīng)用程序。

到此這篇關(guān)于Vue 3中的defineEmits()和defineProps()解析的文章就介紹到這了,更多相關(guān)Vue 3 defineEmits()和defineProps()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    在vue中我們使用模板HTML語(yǔ)法來組建頁(yè)面的,使用render函數(shù)我們可以用js語(yǔ)言來構(gòu)建DOM,這篇文章主要介紹了vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件,需要的朋友可以參考下
    2023-02-02
  • vue3中的ref()詳解

    vue3中的ref()詳解

    ref對(duì)象可以通過.value屬性進(jìn)行修改,修改后的值也是響應(yīng)式的,并且修改后會(huì)觸發(fā)相關(guān)的副作用,這篇文章主要介紹了vue3中的ref(),需要的朋友可以參考下
    2023-05-05
  • vue報(bào)錯(cuò)Error:Cannot?find?module?'fs/promises'的解決方式

    vue報(bào)錯(cuò)Error:Cannot?find?module?'fs/promises'的解決方

    最近的項(xiàng)目需要用到vue/cli,但是用cnpm安裝vue/cli的時(shí)候報(bào)錯(cuò)了,下面這篇文章主要給大家介紹了關(guān)于vue報(bào)錯(cuò)Error:Cannot?find?module?'fs/promises'的解決方式,需要的朋友可以參考下
    2022-11-11
  • vue實(shí)現(xiàn)給某個(gè)數(shù)據(jù)字段添加顏色

    vue實(shí)現(xiàn)給某個(gè)數(shù)據(jù)字段添加顏色

    這篇文章主要介紹了vue實(shí)現(xiàn)給某個(gè)數(shù)據(jù)字段添加顏色方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 關(guān)于vant的日歷組件,在iPhonex上可選日期空白

    關(guān)于vant的日歷組件,在iPhonex上可選日期空白

    這篇文章主要介紹了關(guān)于vant的日歷組件,在iPhonex上可選日期空白,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue?禁止重復(fù)點(diǎn)擊發(fā)送多次請(qǐng)求的實(shí)現(xiàn)

    vue?禁止重復(fù)點(diǎn)擊發(fā)送多次請(qǐng)求的實(shí)現(xiàn)

    本文主要介紹了vue?禁止重復(fù)點(diǎn)擊發(fā)送多次請(qǐng)求的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • vue中$set與$delete的使用及說明

    vue中$set與$delete的使用及說明

    這篇文章主要介紹了vue中$set與$delete的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue中import from@符號(hào)指的是什么意思

    Vue中import from@符號(hào)指的是什么意思

    這篇文章主要介紹了Vue中import from@符號(hào)指的是意思,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中組件遞歸及使用問題

    Vue中組件遞歸及使用問題

    這篇文章主要介紹了Vue中組件的遞歸和使用問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 優(yōu)化Vue template中大量條件選擇v-if的方案分享

    優(yōu)化Vue template中大量條件選擇v-if的方案分享

    本文我們將給大家詳細(xì)的講解一下如何優(yōu)化Vue template 中的大量條件選擇v-if,文中通過代碼示例介紹的非常詳細(xì),有詳細(xì)的優(yōu)化方案,感興趣的朋友可以參考閱讀下
    2023-07-07

最新評(píng)論