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

vue3 組合式API defineEmits() 與 emits 組件選項詳解

 更新時間:2024年09月29日 10:31:13   作者:fishmemory7sec  
在Vue中,defineEmits()是Vue3組合式API中用于聲明自定義事件的,而emits選項則用于Vue2和Vue3的選項式API中,defineEmits()允許使用字符串數(shù)組或對象形式聲明事件,emits選項也支持這兩種形式,且驗證函數(shù)可以驗證事件參數(shù),這兩種方法都是為了更規(guī)范地在組件間通信

defineEmits()emits組件選項在功能上都是用于聲明組件可以向外觸發(fā)的事件。它們的核心目的都是讓組件明確地告知外界它能夠發(fā)出哪些自定義事件,以此來規(guī)范組件間的通信。

defineEmits()在 Vue 3 的組合式 API 中使用。
emits組件選項 在Vue 2 及 Vue 3 的選項式 API 中使用。

defineEmits()

defineEmits()用于聲明由組件觸發(fā)的自定義事件。

可以以兩種形式聲明觸發(fā)的事件:

  • 使用字符串數(shù)組的簡易形式。
  • 使用對象的完整形式。該對象的每個屬性鍵是事件的名稱,值是 null 或一個驗證函數(shù)。
    • 驗證函數(shù)應返回布爾值,以表明事件參數(shù)是否通過了驗證。

字符串數(shù)組語法:

<script setup>
const emit = defineEmits(['increment', 'decrement']);
</script>

defineEmits接收一個字符串數(shù)組['increment', 'decrement'],這意味著在該組件內部可以通過emit('increment')emit('decrement')來觸發(fā)incrementdecrement這兩個事件。

對象語法:

<script setup>
const emit = defineEmits({
    updateCount: (newCount) => {
        return typeof newCount === 'number';
    }
});
</script>

defineEmits接收一個對象,對象的鍵updateCount是事件名稱,值是一個驗證函數(shù)(newCount) => { return typeof newCount === 'number'; }。當在組件內部調用emit('updateCount', value)時,這個驗證函數(shù)會檢查傳遞的value是否為數(shù)字類型,如果不是,Vue 會在開發(fā)環(huán)境下給出警告。

defineEmits函數(shù)的返回值是一個函數(shù),通常命名為emit。emit可以在子組件中觸發(fā)自定義事件。當子組件需要向父組件傳遞數(shù)據(jù)或通知父組件發(fā)生了某些事情時,可以使用emit函數(shù)觸發(fā)相應的自定義事件。

示例

子組件ChildComponent.vue

<!-- ChildComponent.vue -->
<template>
  <h2>ChildComponent的標題</h2>
  <div>ChildComponent的內容</div>
  <div>count: {{ count }}</div>
  <div>在ChildComponent中展示customValue的值:{{ attrs.customValue }}</div>
  <button @click="changeCount">修改count 并 賦值給 父組件的 customValue</button>
</template>
<script setup lang="ts">
import { ref, useAttrs } from 'vue';
let attrs = useAttrs();
let count = ref(1);
const emit = defineEmits({
  updateCustomValue: count => {
    return typeof count.value == 'number';
  }
});
const changeCount = () => {
  count.value++
  emit('updateCustomValue', count.value);
};
</script>

在父組件中使用ChildComponent.vue

<template>
  <div class="home-wrap">
    <h1>父組件</h1>
    <ChildComponent
      class="child-div"
      :customValue="customValue"
      @updateCustomValue="updateCustomValue"
    />
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
const customValue = ref(10);
const updateCustomValue = ($event: number) => {
  console.log($event);
  customValue.value = $event;
};
</script>

如果將子組件的count 屬性聲明為字符串count = ref('hello world'),點擊按鈕,調用emit('updateCustomValue', count.value);,字符串hello world 會被賦值給 customValue。

瀏覽器控制臺報錯:

Invalid event arguments: event validation failed for event “updateCustomValue”.

無效的事件參數(shù):事件"updateCustomValue"驗證失敗。

emits組件選項

emits用于聲明由組件觸發(fā)的自定義事件。

可以以兩種形式聲明觸發(fā)的事件:

  • 使用字符串數(shù)組的簡易形式。
  • 使用對象的完整形式。該對象的每個屬性鍵是事件的名稱,值是 null 或一個驗證函數(shù)。
    • 驗證函數(shù)會接收到傳遞給組件的 $emit 調用的額外參數(shù)。例如,如果 this.$emit('foo', 1) 被調用,foo 相應的驗證函數(shù)將接受參數(shù) 1。
    • 驗證函數(shù)應返回布爾值,以表明事件參數(shù)是否通過了驗證。

字符串數(shù)組語法:

export default {
  emits: ['customEvent1', 'customEvent2']
};

emits是一個組件選項,它是一個字符串數(shù)組,其中customEvent1customEvent2是這個組件可以觸發(fā)的兩個自定義事件。在組件的方法中,可以通過this.$emit('customEvent1', data)來觸發(fā)customEvent1事件,并傳遞相關數(shù)據(jù)data。

對象語法:

export default {
  emits: {
   customEvent: (payload) => {
     // 驗證邏輯,例如檢查 payload 的類型或值
     return payload > 0;
   }
  }
};

emits是一個對象,customEvent是事件名稱,其對應的值是一個驗證函數(shù)。當在組件內部通過this.$emit('customEvent', value)觸發(fā)事件時,這個驗證函數(shù)會檢查傳遞的value是否符合條件(這里是value > 0)。如果不符合,Vue 會在開發(fā)環(huán)境下發(fā)出警告。

到此這篇關于vue3 組合式API defineEmits() 與 emits 組件選項的文章就介紹到這了,更多相關vue3 API defineEmits() 與 emits 組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue過渡和animate.css結合使用詳解

    vue過渡和animate.css結合使用詳解

    本篇文章主要介紹了vue過渡和animate.css結合使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • element?ui富文本編輯器的使用效果與步驟(quill-editor)

    element?ui富文本編輯器的使用效果與步驟(quill-editor)

    富文本編輯器在任何項目中都會用到,在Element中我們推薦vue-quill-editor組件,下面這篇文章主要給大家介紹了關于element?ui富文本編輯器的使用效果與步驟(quill-editor)的相關資料,需要的朋友可以參考下
    2022-10-10
  • Vue實現(xiàn)簡單的發(fā)表評論功能

    Vue實現(xiàn)簡單的發(fā)表評論功能

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)簡單的發(fā)表評論功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue實現(xiàn)pdf文件發(fā)送到郵箱功能的示例代碼

    vue實現(xiàn)pdf文件發(fā)送到郵箱功能的示例代碼

    這篇文章主要介紹了vue實現(xiàn)pdf文件發(fā)送到郵箱功能,實現(xiàn)代碼包括對郵箱格式內容是否為空的驗證方法,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼

    go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼

    這篇文章主要介紹了go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • vue+uniapp實現(xiàn)生成二維碼

    vue+uniapp實現(xiàn)生成二維碼

    這篇文章主要為大家詳細介紹了vue結合uniapp實現(xiàn)生成二維碼的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以學習一下
    2023-12-12
  • Electron+Vue3+Vite搭建桌面應用的示例代碼

    Electron+Vue3+Vite搭建桌面應用的示例代碼

    本文主要介紹了Electron+Vue3+Vite搭建桌面應用的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • vue中插件和組件的區(qū)別點及用法總結

    vue中插件和組件的區(qū)別點及用法總結

    在本篇文章里小編給大家分享的是一篇關于vue中插件和組件的區(qū)別點及用法總結內容,有興趣的的朋友們可以學習下。
    2021-12-12
  • Vue之常用的內置指令詳解

    Vue之常用的內置指令詳解

    這篇文章主要為大家介紹了Vue之常用的內置指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 在Vue中實現(xiàn)對文件的壓縮和解壓縮功能

    在Vue中實現(xiàn)對文件的壓縮和解壓縮功能

    在前端開發(fā)中,文件的壓縮和解壓縮是經(jīng)常需要用到的功能,尤其是在需要上傳和下載文件的場景下,文件壓縮可以減小文件大小,加快文件傳輸速度,提高用戶體驗,本文將介紹在Vue項目中如何進行文件的壓縮和解壓縮,需要的朋友可以參考下
    2023-11-11

最新評論

页游| 房山区| 师宗县| 汝城县| 区。| 林甸县| 通山县| 镇宁| 凌云县| 兴安县| 北碚区| 潞西市| 正安县| 乌拉特后旗| 兴和县| 黎川县| 闻喜县| 筠连县| 白玉县| 隆化县| 宜良县| 海盐县| 宕昌县| 左云县| 宣威市| 固原市| 清苑县| 无为县| 磐安县| 永川市| 尼木县| 芜湖市| 恩施市| 贵阳市| 栾城县| 平阳县| 庆安县| 西华县| 海伦市| 乌拉特前旗| 盐亭县|