最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3的definePros和defineEmits使用及說(shuō)明

 更新時(shí)間:2025年10月11日 09:52:55   作者:whale  fall  
Vue3中的defineProps和defineEmits是組合式API的一部分,用于定義組件的props和事件,defineProps簡(jiǎn)化了props的定義和類(lèi)型安全,而defineEmits則用于聲明和觸發(fā)組件的自定義事件,確保事件名稱(chēng)的類(lèi)型安全

在 Vue 3 中,definePropsdefineEmits 是組合式 API 中用于定義組件的 props事件 的方法,提供了一種更簡(jiǎn)潔和明確的方式來(lái)管理組件的輸入和輸出。

它們屬于 Composition API 的一部分,在 Vue 2 中通常使用 props$emit 來(lái)實(shí)現(xiàn)。

1.defineProps

defineProps 用來(lái)定義組件的 props,即組件從父組件接收的屬性。它使得在 <script setup> 中使用 props 變得更加簡(jiǎn)單和類(lèi)型安全。

基本用法

<script setup>
import { defineProps } from 'vue';

// 定義 props
const props = defineProps({
  msg: {
    type: String,
    required: true
  },
  count: {
    type: Number,
    default: 0
  }
});
</script>

<template>
  <div>
    <p>{{ props.msg }}</p>
    <p>{{ props.count }}</p>
  </div>
</template>

解釋

  • defineProps 接收一個(gè)對(duì)象,可以為每個(gè) prop 提供類(lèi)型、默認(rèn)值、是否必填等信息。
  • 在 <template> 中直接訪問(wèn) props,無(wú)需手動(dòng)定義 props

類(lèi)型推導(dǎo)

如果使用 TypeScript,可以通過(guò)類(lèi)型推導(dǎo)讓 props 更加明確和安全:

<script setup lang="ts">
import { defineProps } from 'vue';

interface Props {
  msg: string;
  count: number;
}

const props = defineProps<Props>();
</script>

2.defineEmits

defineEmits 用于定義組件觸發(fā)的 自定義事件。它讓你在 <script setup> 中聲明組件發(fā)出的事件,并確保事件名稱(chēng)的類(lèi)型安全。

基本用法

<script setup>
import { defineEmits } from 'vue';

// 定義事件
const emit = defineEmits<{
  (event: 'update', newValue: string): void;
}>();

// 觸發(fā)事件
const changeValue = () => {
  emit('update', 'new value');
};
</script>

<template>
  <button @click="changeValue">Change Value</button>
</template>

解釋

  • defineEmits 接受一個(gè)對(duì)象或類(lèi)型,它定義了所有可能觸發(fā)的事件及其參數(shù)類(lèi)型。
  • emit 是一個(gè)函數(shù),用于觸發(fā)自定義事件,在 Vue 3 中無(wú)需手動(dòng)綁定 $emit。

多事件支持

你也可以定義多個(gè)事件:

<script setup>
const emit = defineEmits<{
  (event: 'update', newValue: string): void;
  (event: 'delete', id: number): void;
}>();
</script>

3.組合使用

你可以在一個(gè)組件中同時(shí)使用 definePropsdefineEmits,以便管理組件的輸入和輸出。

<script setup>
import { defineProps, defineEmits } from 'vue';

// 定義 props
const props = defineProps({
  title: String
});

// 定義事件
const emit = defineEmits<{
  (event: 'updateTitle', newTitle: string): void;
}>();

// 觸發(fā)事件
const updateTitle = () => {
  emit('updateTitle', 'New Title');
};
</script>

<template>
  <h1>{{ props.title }}</h1>
  <button @click="updateTitle">Update Title</button>
</template>

總結(jié)

  • defineProps:用于定義組件的輸入(即 props),提供了類(lèi)型推導(dǎo)和默認(rèn)值的支持。
  • defineEmits:用于定義組件的輸出(即觸發(fā)的事件),提供了事件類(lèi)型安全。

這兩個(gè)方法大大簡(jiǎn)化了組件的編寫(xiě),使得代碼更加簡(jiǎn)潔、可維護(hù),并且提供了更強(qiáng)的類(lèi)型安全。如果你用 TypeScript,它們能幫助你避免很多常見(jiàn)的錯(cuò)誤。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue2導(dǎo)入使用vue-codemirror組件的教程詳解

    vue2導(dǎo)入使用vue-codemirror組件的教程詳解

    vue-codemirror是一個(gè)基于Vue的代碼在線編輯器組件,它封裝了CodeMirror編輯器,使得在Vue項(xiàng)目中可以方便地使用CodeMirror,下面我們就來(lái)看看vue-codemirror的具體使用吧
    2024-02-02
  • 讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開(kāi)瀏覽器的方法

    讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開(kāi)瀏覽器的方法

    今天小編就為大家分享一篇讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開(kāi)瀏覽器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue項(xiàng)目部署上線全過(guò)程記錄(保姆級(jí)教程)

    Vue項(xiàng)目部署上線全過(guò)程記錄(保姆級(jí)教程)

    vue項(xiàng)目開(kāi)發(fā)完畢后,我們需要將項(xiàng)目打包上線,同時(shí)我們希望可以在本地預(yù)覽生產(chǎn)環(huán)境項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目部署上線的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • iview實(shí)現(xiàn)動(dòng)態(tài)表單和自定義驗(yàn)證時(shí)間段重疊

    iview實(shí)現(xiàn)動(dòng)態(tài)表單和自定義驗(yàn)證時(shí)間段重疊

    這篇文章主要介紹了iview實(shí)現(xiàn)動(dòng)態(tài)表單和自定義驗(yàn)證時(shí)間段重疊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 關(guān)于Vue 自定義指令實(shí)現(xiàn)元素拖動(dòng)的詳細(xì)代碼

    關(guān)于Vue 自定義指令實(shí)現(xiàn)元素拖動(dòng)的詳細(xì)代碼

    這篇文章主要介紹了Vue 自定義指令實(shí)現(xiàn)元素拖動(dòng),在使用自定義指令之前,先對(duì)自定義指令有一定的了解,主要從自定義指令定義范圍,鉤子函數(shù)方面入手,需要的朋友可以參考下
    2022-01-01
  • vue中循環(huán)表格數(shù)據(jù)出現(xiàn)數(shù)據(jù)聯(lián)動(dòng)現(xiàn)象(示例代碼)

    vue中循環(huán)表格數(shù)據(jù)出現(xiàn)數(shù)據(jù)聯(lián)動(dòng)現(xiàn)象(示例代碼)

    在Vue中循環(huán)生成表格數(shù)據(jù)時(shí),可能會(huì)遇到數(shù)據(jù)聯(lián)動(dòng)的現(xiàn)象,即修改一個(gè)表格中的數(shù)據(jù)后,其他表格的數(shù)據(jù)也會(huì)跟著變化,這種現(xiàn)象通常是因?yàn)樗斜砀竦臄?shù)據(jù)引用了同一個(gè)對(duì)象或數(shù)組導(dǎo)致的,本文介紹vue中循環(huán)表格數(shù)據(jù)出現(xiàn)數(shù)據(jù)聯(lián)動(dòng)現(xiàn)象,感興趣的朋友一起看看吧
    2024-11-11
  • Vue大屏數(shù)據(jù)展示示例

    Vue大屏數(shù)據(jù)展示示例

    公司的大數(shù)據(jù)工作組就需要通過(guò)數(shù)據(jù)大屏展示一些處理過(guò)后有價(jià)值的信息,本文主要介紹了Vue大屏數(shù)據(jù)展示示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Vue.js項(xiàng)目在IE11白屏報(bào)錯(cuò)的解決方法

    Vue.js項(xiàng)目在IE11白屏報(bào)錯(cuò)的解決方法

    本文主要介紹了Vue.js項(xiàng)目在IE11白屏報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • vue實(shí)現(xiàn)顯示消息提示框功能

    vue實(shí)現(xiàn)顯示消息提示框功能

    這篇文章主要介紹了vue實(shí)現(xiàn)顯示消息提示框功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Vue表單控件數(shù)據(jù)綁定方法詳解

    Vue表單控件數(shù)據(jù)綁定方法詳解

    本文將詳細(xì)介紹Vue表單控件數(shù)據(jù)綁定方法,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

灵山县| 宿松县| 绍兴县| 三门峡市| 巨鹿县| 元朗区| 普陀区| 伊吾县| 囊谦县| 静安区| 东阳市| 杭锦后旗| 慈利县| 盐城市| 灵川县| 三明市| 新田县| 肇源县| 呼和浩特市| 巨野县| 东光县| 大渡口区| 白城市| 潜江市| 屏山县| 绍兴市| 西平县| 淄博市| 德昌县| 阳春市| 罗江县| 蒙城县| 麦盖提县| 静海县| 隆尧县| 开原市| 潞西市| 伊吾县| 新蔡县| 长海县| 汾西县|