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

vue3中defineEmits的使用舉例詳解

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

vue3 defineEmits的使用

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

1、計數(shù)器案例

父組件:

<template>
     <h2>當(dāng)前計數(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、定義新增和遞減計數(shù)方法
    const increment = () => {
        num.value++
        emits('add1', num.value)
    }
    const decrement = () => {
        num.value--
        emits('decre1', num.value)
    }
</script>

頁面渲染效果

2、案例說明

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

3、defineEmits API 使用說明

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

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

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

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

 emits('add1', num.value)

補充知識:Vue 2中

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

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

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

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

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

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

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

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

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

使用場景:

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

優(yōu)點:

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

缺點:

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

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

總結(jié) 

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

相關(guān)文章

  • Vue computed計算屬性的使用方法

    Vue computed計算屬性的使用方法

    這篇文章主要為大家詳細(xì)介紹了Vue computed計算屬性的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • mpvue 項目初始化及實現(xiàn)授權(quán)登錄的實現(xiàn)方法

    mpvue 項目初始化及實現(xiàn)授權(quán)登錄的實現(xiàn)方法

    這篇文章主要介紹了mpvue 項目初始化及實現(xiàn)授權(quán)登錄的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解如何在Vue中動態(tài)添加類名

    詳解如何在Vue中動態(tài)添加類名

    本文主要介紹了如何在Vue中動態(tài)添加類名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 教你如何使用VUE組件創(chuàng)建SpreadJS自定義單元格

    教你如何使用VUE組件創(chuàng)建SpreadJS自定義單元格

    這篇文章主要介紹了使用VUE組件創(chuàng)建SpreadJS自定義單元格的方法,通常我們使用組件的方式是,在實例化Vue對象之前,通過Vue.component方法來注冊全局的組件,文中通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-01-01
  • vue模式history下在iis中配置流程

    vue模式history下在iis中配置流程

    這篇文章主要介紹了vue模式history下在iis中配置流程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue里面的el-select綁定默認(rèn)值方式

    vue里面的el-select綁定默認(rèn)值方式

    這篇文章主要介紹了vue里面的el-select綁定默認(rèn)值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue+element創(chuàng)建動態(tài)的form表單及動態(tài)生成表格的行和列

    vue+element創(chuàng)建動態(tài)的form表單及動態(tài)生成表格的行和列

    這篇文章主要介紹了vue+element創(chuàng)建動態(tài)的form表單及動態(tài)生成表格的行和列 ,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Vue.js@2.6.10更新內(nèi)置錯誤處機制Fundebug同步支持相應(yīng)錯誤監(jiān)控

    Vue.js@2.6.10更新內(nèi)置錯誤處機制Fundebug同步支持相應(yīng)錯誤監(jiān)控

    這篇文章主要介紹了Vue.js@2.6.10更新內(nèi)置錯誤處機制,F(xiàn)undebug同步支持相應(yīng)錯誤監(jiān)控 ,需要的朋友可以參考下
    2019-05-05
  • 深度剖析?Vue3?在瀏覽器的運行原理

    深度剖析?Vue3?在瀏覽器的運行原理

    這篇文章主要介紹了深度剖析Vue3在瀏覽器的運行原理,文章通過圍繞主題展開相關(guān)詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Vue2+JS實現(xiàn)掃雷小游戲

    Vue2+JS實現(xiàn)掃雷小游戲

    實現(xiàn)小游戲可以鍛煉自己的邏輯思維能力,也不會很枯燥,完成時會給自己帶來一種滿足感。本文就將利用Vue和JS實現(xiàn)簡單的掃雷小游戲,需要的可以參考一下
    2022-06-06

最新評論