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

淺析Vue.js中$emit和$on的用法和區(qū)別

 更新時(shí)間:2023年07月21日 11:13:18   作者:程序媛-徐師姐  
在?Vue.js?中,$emit和$on方法是兩個(gè)常用的方法,用于實(shí)現(xiàn)組件間的通信,雖然它們的名字很相似,但它們的作用和用法有所不同,本文將介紹$emit和$on方法的區(qū)別,并通過代碼示例來說明它們的用法,感興趣的朋友可以參考下

Vue.js 中的 $emit 和 $on 方法有什么區(qū)別?

$emit

$emit 方法是 Vue.js 中用于觸發(fā)自定義事件的方法。它可以讓我們在一個(gè)組件中觸發(fā)一個(gè)自定義事件,并向父組件或祖先組件派發(fā)這個(gè)事件。在觸發(fā)事件時(shí),我們可以傳遞任意數(shù)量的參數(shù),這些參數(shù)可以在監(jiān)聽事件的組件中獲取到。

下面是一個(gè)使用 $emit 方法的示例代碼:

// 定義一個(gè)名為 myButton 的組件
Vue.component('my-button', {
  template: `
    <button @click="onClick">Click me</button>
  `,
  methods: {
    onClick: function () {
      this.$emit('clicked', 'Hello, world!')
    }
  }
})
// 定義一個(gè)名為 myApp 的組件,并在其中監(jiān)聽 myButton 組件的 clicked 事件
Vue.component('my-app', {
  template: `
    <div>
      <my-button @clicked="onButtonClicked"></my-button>
      <p>{{ message }}</p>
    </div>
  `,
  data: function () {
    return {
      message: ''
    }
  },
  methods: {
    onButtonClicked: function (msg) {
      this.message = msg
    }
  }
})

在上面的代碼中,我們定義了一個(gè)名為 myButton 的組件。這個(gè)組件中有一個(gè)按鈕,當(dāng)用戶點(diǎn)擊按鈕時(shí),會(huì)觸發(fā)一個(gè)名為 clicked 的自定義事件,并將字符串 ‘Hello, world!’ 作為參數(shù)傳遞給事件處理函數(shù)。

然后,我們定義了一個(gè)名為 myApp 的組件,并在其中監(jiān)聽 myButton 組件的 clicked 事件。當(dāng) myButton 組件觸發(fā) clicked 事件時(shí),myApp 組件中的 onButtonClicked 方法就會(huì)被調(diào)用,并將傳遞給事件處理函數(shù)的參數(shù)賦值給組件中的 message 數(shù)據(jù),從而更新視圖。

需要注意的是,$emit 方法只能向父組件或祖先組件派發(fā)事件,不能向子組件或后代組件派發(fā)事件。這是因?yàn)?Vue.js 中的事件傳遞是基于 DOM 樹的,父組件可以通過 props 將數(shù)據(jù)傳遞給子組件,但是子組件不能直接向父組件傳遞數(shù)據(jù)。

$on

$on 方法是 Vue.js 中用于監(jiān)聽自定義事件的方法。它可以讓我們在一個(gè)組件中監(jiān)聽一個(gè)自定義事件,并在事件觸發(fā)時(shí)執(zhí)行一個(gè)回調(diào)函數(shù)。在監(jiān)聽事件時(shí),我們可以指定一個(gè)可選的參數(shù),用于限制事件的作用域,使得事件只在指定的組件中有效。

下面是一個(gè)使用 $on 方法的示例代碼:

// 定義一個(gè)名為 myButton 的組件,并在其中觸發(fā)一個(gè) clicked 事件
Vue.component('my-button', {
  template: `
    <button @click="onClick">Click me</button>
  `,
  methods: {
    onClick: function () {
      this.$emit('clicked', 'Hello, world!')
    }
  },
  created: function () {
    this.$emit('clicked', 'Hello, world!')
  }
})
// 定義一個(gè)名為 myApp 的組件,并在其中監(jiān)聽 myButton 組件的 clicked 事件
Vue.component('my-app', {
  template: `
    <div>
      <my-button></my-button>
      <p>{{ message }}</p>
    </div>
  `,
  data: function () {
    return {
      message: ''
    }
  },
  created: function () {
    this.$on('clicked', this.onButtonClicked)
  },
  methods: {
    onButtonClicked: function (msg) {
      this.message = msg
    }
  }
})

在上面的代碼中,我們定義了一個(gè)名為 myButton 的組件,并在其中觸發(fā)一個(gè) clicked 事件。在 myApp 組件中,我們使用 $on 方法監(jiān)聽 myButton 組件的 clicked 事件,并指定該事件只在 myApp 組件中有效。當(dāng) myButton 組件觸發(fā) clicked 事件時(shí),myApp 組件的 onButtonClicked 方法就會(huì)被調(diào)用,并將傳遞給事件處理函數(shù)的參數(shù)賦值給組件中的 message 數(shù)據(jù),從而更新視圖。

需要注意的是,$on 方法只能監(jiān)聽已經(jīng)派發(fā)的事件,不能監(jiān)聽尚未派發(fā)的事件。因此,在上面的代碼中,我們在 myButton 組件的 created 鉤子函數(shù)中手動(dòng)觸發(fā)了 clicked 事件,以便 myApp 組件可以監(jiān)聽到該事件。

區(qū)別

$emit和on方法的區(qū)別主要在于它們的作用和用法。 on方法的區(qū)別主要在于它們的作用和用法。on方法的區(qū)別主要在于它們的作用和用法。emit方法用于觸發(fā)自定義事件并向父組件或祖先組件派發(fā)該事件,而 on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。 on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。emit方法必須在組件內(nèi)部使用,而$on方法可以在任何地方使用,包括組件內(nèi)部和組件外部。

另外,$emit方法可以傳遞任意數(shù)量的參數(shù),而on方法只能傳遞一個(gè)參數(shù),這個(gè)參數(shù)就是事件處理函數(shù)在接收到事件時(shí)傳遞的數(shù)據(jù)。 on方法只能傳遞一個(gè)參數(shù),這個(gè)參數(shù)就是事件處理函數(shù)在接收到事件時(shí)傳遞的數(shù)據(jù)。on方法只能傳遞一個(gè)參數(shù),這個(gè)參數(shù)就是事件處理函數(shù)在接收到事件時(shí)傳遞的數(shù)據(jù)。emit方法只能向父組件或祖先組件派發(fā)事件,而$on方法可以監(jiān)聽任意組件派發(fā)的事件。

總結(jié)

$emit 和on方法是Vue . js中用于實(shí)現(xiàn)組件間通信的兩個(gè)重要方法。 on方法是Vue.js中用于實(shí)現(xiàn)組件間通信的兩個(gè)重要方法。on方法是Vue.js中用于實(shí)現(xiàn)組件間通信的兩個(gè)重要方法。emit方法用于觸發(fā)自定義事件并向父組件或祖先組件派發(fā)該事件,而on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。on方法用于監(jiān)聽自定義事件并在事件觸發(fā)時(shí)執(zhí)行回調(diào)函數(shù)。emit方法必須在組件內(nèi)部使用,而on方法可以在任何地方使用,包括組件內(nèi)部和組件外部。 on方法可以在任何地方使用,包括組件內(nèi)部和組件外部。on方法可以在任何地方使用,包括組件內(nèi)部和組件外部。emit方法可以傳遞任意數(shù)量的參數(shù),而on方法只能傳遞一個(gè)參數(shù)。on方法只能傳遞一個(gè)參數(shù)。on方法只能傳遞一個(gè)參數(shù)。emit方法只能向父組件或祖先組件派發(fā)事件,而 $on 方法可以監(jiān)聽任意組件派發(fā)的事件。

在實(shí)際開發(fā)中,$emit和$on方法經(jīng)常被用來實(shí)現(xiàn)父子組件之間的數(shù)據(jù)傳遞和交互。通過熟練掌握這兩個(gè)方法的用法,我們可以更加靈活地組織組件間的關(guān)系,提高組件的復(fù)用性和可維護(hù)性。

以上就是淺析Vue.js中$emit和$on的用法和區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Vue.js中$emit和$on的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3?頭像上傳?組件功能實(shí)現(xiàn)

    vue3?頭像上傳?組件功能實(shí)現(xiàn)

    這篇文章主要介紹了vue3頭像上傳組件功能,用到了自定義組件v-model的雙向綁定,使用axios + formData 上傳文件,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Vue 實(shí)現(xiàn)一個(gè)命令式彈窗組件功能

    Vue 實(shí)現(xiàn)一個(gè)命令式彈窗組件功能

    這篇文章主要介紹了vue實(shí)現(xiàn)命令式彈窗組件功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • elementui實(shí)現(xiàn)預(yù)覽圖片組件二次封裝

    elementui實(shí)現(xiàn)預(yù)覽圖片組件二次封裝

    這篇文章主要介紹了elementui實(shí)現(xiàn)預(yù)覽圖片組件二次封裝的方法 ,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • vue里面使用mui的彈出日期選擇插件實(shí)例

    vue里面使用mui的彈出日期選擇插件實(shí)例

    今天小編就為大家分享一篇vue里面使用mui的彈出日期選擇插件實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 前端必知必會(huì)之Vue?v-if指令詳解

    前端必知必會(huì)之Vue?v-if指令詳解

    這篇文章主要介紹了前端必知必會(huì)之Vue?v-if指令的相關(guān)資料,Vue中的條件渲染指令v-if、v-else-if和v-else用于根據(jù)條件動(dòng)態(tài)創(chuàng)建HTML元素,通過使用比較運(yùn)算符和邏輯運(yùn)算符,可以編寫復(fù)雜的條件邏輯,需要的朋友可以參考下
    2025-02-02
  • Vue下拉框值變動(dòng)事件傳多個(gè)參數(shù)方式

    Vue下拉框值變動(dòng)事件傳多個(gè)參數(shù)方式

    這篇文章主要介紹了Vue下拉框值變動(dòng)事件傳多個(gè)參數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue3中虛擬dom的介紹與使用詳解

    vue3中虛擬dom的介紹與使用詳解

    Vue?是如何將一份模板轉(zhuǎn)換為真實(shí)的?DOM?節(jié)點(diǎn)的,又是如何高效地更新這些節(jié)點(diǎn)的呢,這些都離不開虛擬dom這個(gè)概念,下面我們就來了解下虛擬dom這個(gè)概念以及它是什么吧
    2024-01-01
  • vue實(shí)現(xiàn)手風(fēng)琴效果

    vue實(shí)現(xiàn)手風(fēng)琴效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)手風(fēng)琴效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解vuex的簡單todolist例子

    詳解vuex的簡單todolist例子

    這篇文章主要介紹了詳解vuex的簡單todolist例子,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • vue路由相對路徑跳轉(zhuǎn)方式

    vue路由相對路徑跳轉(zhuǎn)方式

    這篇文章主要介紹了vue路由相對路徑跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

吉隆县| 巴里| 吉首市| 门源| 河北区| 平利县| 兴山县| 文化| 沂源县| 托里县| 钟山县| 砀山县| 无锡市| 河间市| 石嘴山市| 南召县| 保德县| 绥化市| 文水县| 穆棱市| 伊宁县| 莆田市| 财经| 衡水市| 内丘县| 黄骅市| 开阳县| 建昌县| 察哈| 彰化市| 峨边| 石林| 吴忠市| 汝阳县| 湛江市| 九台市| 兴隆县| 黎川县| 高雄县| 高邮市| 镇原县|