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

Vue3的definePros和defineEmits使用及說明

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

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

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

1.defineProps

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

基本用法

<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è)對象,可以為每個(gè) prop 提供類型、默認(rèn)值、是否必填等信息。
  • 在 <template> 中直接訪問 props,無需手動(dòng)定義 props。

類型推導(dǎo)

如果使用 TypeScript,可以通過類型推導(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ā)出的事件,并確保事件名稱的類型安全。

基本用法

<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è)對象或類型,它定義了所有可能觸發(fā)的事件及其參數(shù)類型。
  • emit 是一個(gè)函數(shù),用于觸發(fā)自定義事件,在 Vue 3 中無需手動(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),提供了類型推導(dǎo)和默認(rèn)值的支持。
  • defineEmits:用于定義組件的輸出(即觸發(fā)的事件),提供了事件類型安全。

這兩個(gè)方法大大簡化了組件的編寫,使得代碼更加簡潔、可維護(hù),并且提供了更強(qiáng)的類型安全。如果你用 TypeScript,它們能幫助你避免很多常見的錯(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,下面我們就來看看vue-codemirror的具體使用吧
    2024-02-02
  • 讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開瀏覽器的方法

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

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

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

    vue項(xiàng)目開發(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í)間段重疊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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),在使用自定義指令之前,先對自定義指令有一定的了解,主要從自定義指令定義范圍,鉤子函數(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è)對象或數(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ù)工作組就需要通過數(shù)據(jù)大屏展示一些處理過后有價(jià)值的信息,本文主要介紹了Vue大屏數(shù)據(jù)展示示例,文中通過示例代碼介紹的非常詳細(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ò)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • vue實(shí)現(xiàn)顯示消息提示框功能

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

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

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

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

最新評論

久治县| 雷山县| 巴楚县| 重庆市| 金门县| 阿合奇县| 凤翔县| 洛宁县| 汨罗市| 札达县| 清河县| 和顺县| 屏南县| 赣州市| 郓城县| 伊川县| 莱州市| 花垣县| 叙永县| 喜德县| 开封县| 庆安县| 玛曲县| 阿瓦提县| 南郑县| 商水县| 永吉县| 安多县| 定陶县| 富蕴县| 大悟县| 琼中| 南投市| 尖扎县| 信丰县| 高平市| 工布江达县| 章丘市| 崇文区| 重庆市| 抚州市|