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

vue3中defineEmits的使用舉例詳解

 更新時(shí)間:2023年08月14日 10:42:55   作者:coderXiao~  
這篇文章主要給大家介紹了關(guān)于vue3中defineEmits使用的相關(guān)資料,在Vue3中可以使用defineEmits函數(shù)來(lái)定義組件的自定義事件,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

vue3 defineEmits的使用

以下代碼和內(nèi)容的使用都是在vue3的setup中,未使用TS。

1、計(jì)數(shù)器案例

父組件:

<template>
     <h2>當(dāng)前計(jì)數(shù)為: {{counter}}</h2>
     <HelloWorld @add1="add1" @decre1="decre1"></HelloWorld>
</template>
<script setup>
  import { ref } from 'vue'
  import HelloWorld from './HelloWorld.vue'
  // 1、定義的屬性
  const counter = ref(0)
  // 2、定義的方法
   const add1 = (payload) => {
     counter.value = payload
  }
  const decre1 = (payload) => {
     counter.value = payload
  }
</script>

子組件:

<template>
    <div>
        <button @click="increment">+1</button>
        <button @click="decrement">-1</button>
        <div>
             <input type="text" v-model.number="num">
        </div>
    </div>
</template>
<script setup>
    import { ref, defineEmits } from 'vue'
    // 1、定義的屬性
    const num = ref(0)
    // 2、定義發(fā)射給父組件的方法
    const emits = defineEmits(['add1', 'decre1'])
    // 3、定義新增和遞減計(jì)數(shù)方法
    const increment = () => {
        num.value++
        emits('add1', num.value)
    }
    const decrement = () => {
        num.value--
        emits('decre1', num.value)
    }
</script>

頁(yè)面渲染效果

2、案例說(shuō)明

1、在父組件中定義一個(gè)變量2、在子組件中定義+1和-1方法,以及一個(gè)變量3、通過(guò)子組件事件修改變量值,同時(shí)將值傳遞給父組件,對(duì)父組件的變量進(jìn)行賦值

3、defineEmits API 使用說(shuō)明

1、在子組件中調(diào)用defineEmits并定義要發(fā)射給父組件的方法

const emits = defineEmits(['add1', 'decre1'])

2、使用defineEmits會(huì)返回一個(gè)方法,使用一個(gè)變量emits(變量名隨意)去接收

3、在子組件要觸發(fā)的方法中,調(diào)用emits并傳入發(fā)射給父組件的方法以及參數(shù)

 emits('add1', num.value)

補(bǔ)充知識(shí):Vue 2中

在Vue 2中,我們可以使用$emit方法來(lái)觸發(fā)自定義事件,并在父組件中通過(guò)v-on或@來(lái)監(jiān)聽(tīng)這些事件。以下是使用Vue 2創(chuàng)建自定義事件的示例:

首先,在子組件中使用$emit觸發(fā)自定義事件:

Vue.component('my-component', {
  methods: {
    handleClick() {
      this.$emit('my-event', 'event payload');
    }
  }
});

然后,在父組件中使用v-on或@來(lái)監(jiān)聽(tīng)自定義事件:

<my-component v-on:my-event="handleEvent"></my-component>
<!-- 或者使用 @ -->
<my-component @my-event="handleEvent"></my-component>

最后,在父組件的方法中處理自定義事件:

methods: {
  handleEvent(payload) {
    // 處理事件邏輯
    console.log('Received event:', payload);
  }
}

在這個(gè)示例中,子組件通過(guò)$emit方法觸發(fā)了一個(gè)名為my-event的自定義事件,并傳遞了一個(gè)payload作為參數(shù)。父組件通過(guò)v-on或@監(jiān)聽(tīng)這個(gè)自定義事件,并在對(duì)應(yīng)的方法中處理事件邏輯。

需要注意的是,在Vue 2中,自定義事件的傳遞是單向的,只能從子組件向父組件傳遞數(shù)據(jù)。如果需要在父組件中向子組件傳遞數(shù)據(jù),可以使用props來(lái)實(shí)現(xiàn)。

使用場(chǎng)景:

  • 父子組件通信:自定義事件是Vue 2中實(shí)現(xiàn)父子組件通信的一種方式。父組件可以監(jiān)聽(tīng)子組件觸發(fā)的自定義事件,從而獲取子組件傳遞的數(shù)據(jù)或執(zhí)行相應(yīng)的邏輯。
  • 組件解耦:通過(guò)使用自定義事件,可以將組件解耦,使得組件之間的通信更加靈活和可維護(hù)。組件可以通過(guò)觸發(fā)自定義事件來(lái)通知其他組件發(fā)生了某些特定的動(dòng)作或狀態(tài)變化。

優(yōu)點(diǎn):

  • 靈活性:自定義事件提供了一種靈活的方式來(lái)實(shí)現(xiàn)組件之間的通信,可以根據(jù)具體的需求定義和觸發(fā)不同的事件。
  • 組件解耦:通過(guò)使用自定義事件,可以將組件解耦,使得組件之間的通信更加靈活和可維護(hù)。

缺點(diǎn):

  • 單向傳遞:Vue 2中的自定義事件是單向傳遞的,只能從子組件向父組件傳遞數(shù)據(jù)。如果需要在父組件向子組件傳遞數(shù)據(jù),需要使用props來(lái)實(shí)現(xiàn)。
  • 需要手動(dòng)管理事件:在使用自定義事件時(shí),需要手動(dòng)定義和管理事件的名稱和參數(shù),相對(duì)于其他通信方式,需要更多的配置和代碼。

總體來(lái)說(shuō),Vue 2中的自定義事件適用于父子組件之間的通信和組件解耦的場(chǎng)景。它提供了一種靈活的方式來(lái)實(shí)現(xiàn)組件之間的通信,但需要手動(dòng)管理事件,并且只能實(shí)現(xiàn)單向傳遞。在一些復(fù)雜的場(chǎng)景中,可能需要考慮使用Vuex或其他狀態(tài)管理庫(kù)來(lái)管理組件之間的共享狀態(tài)。

總結(jié) 

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

相關(guān)文章

  • Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性詳解

    Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性詳解

    這篇文章主要介紹了Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue 2.5 Level E 發(fā)布了: 新功能特性一覽

    Vue 2.5 Level E 發(fā)布了: 新功能特性一覽

    很高興Vue 2.5 Level E 發(fā)布了。在這篇文章中,我們將重點(diǎn)介紹一些更重要的的變化:更好的 TypeScript 集成,更好的錯(cuò)誤處理,更好地支持單文件組件中的函數(shù)式組件以及與環(huán)境無(wú)關(guān)的服務(wù)端渲染
    2017-10-10
  • vue+jsplumb實(shí)現(xiàn)連線繪圖

    vue+jsplumb實(shí)現(xiàn)連線繪圖

    這篇文章主要為大家詳細(xì)介紹了vue+jsplumb實(shí)現(xiàn)連線繪圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue-router的HTML5 History 模式設(shè)置

    vue-router的HTML5 History 模式設(shè)置

    這篇文章主要介紹了vue-router的HTML5 History模式設(shè)置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue 更改連接后臺(tái)的api示例

    vue 更改連接后臺(tái)的api示例

    今天小編就為大家分享一篇vue 更改連接后臺(tái)的api示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue3使用Facebook嵌入式視頻播放器API方法詳解

    vue3使用Facebook嵌入式視頻播放器API方法詳解

    這篇文章主要為大家介紹了vue3使用Facebook嵌入式視頻播放器API方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 關(guān)于vue-cli 3配置打包優(yōu)化要點(diǎn)(推薦)

    關(guān)于vue-cli 3配置打包優(yōu)化要點(diǎn)(推薦)

    這篇文章主要介紹了vue-cli 3配置打包優(yōu)化要點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺談Vuejs Prop基本用法

    淺談Vuejs Prop基本用法

    本篇文章主要介紹了Vuejs Prop基本用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • vue-cli3.0實(shí)現(xiàn)一個(gè)多頁(yè)面應(yīng)用的歷奇經(jīng)歷記錄總結(jié)

    vue-cli3.0實(shí)現(xiàn)一個(gè)多頁(yè)面應(yīng)用的歷奇經(jīng)歷記錄總結(jié)

    這篇文章主要介紹了vue-cli3.0實(shí)現(xiàn)一個(gè)多頁(yè)面應(yīng)用的歷奇經(jīng)歷,總結(jié)分析了vue-cli3.0實(shí)現(xiàn)一個(gè)多頁(yè)面應(yīng)用遇到的問(wèn)題與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Vue中的局部組件介紹

    Vue中的局部組件介紹

    這篇文章主要介紹了Vue中的局部組件,文章圍繞Vue局部組件得相關(guān)資料展開(kāi)內(nèi)容,需要的的小孩伙伴請(qǐng)參考下面文章的具體介紹,希望對(duì)你有所幫助
    2021-12-12

最新評(píng)論

张北县| 阿荣旗| 莲花县| 同仁县| 民丰县| 曲周县| 屯留县| 龙山县| 永和县| 额济纳旗| 通山县| 集贤县| 綦江县| 谷城县| 余庆县| 内江市| 余姚市| 灌云县| 湾仔区| 康马县| 清苑县| 武定县| 台东县| 武平县| 金川县| 连平县| 江西省| 卫辉市| 泰顺县| 大竹县| 西丰县| 利辛县| 宜良县| 团风县| 额敏县| 崇文区| 大余县| 陇西县| 甘谷县| 扎赉特旗| 江阴市|