国产女主播成人av-亚洲国产精品黑人久久久-欧美日韩一区二区三区gif-91综合久久噜久久-国产日韩欧美在线观看大片-国产一区二区三区御姐-开心激情婷婷久久视频-亚洲精品日韩在线观看视频网站-亚洲av欧美av日韩av,日本色一区二区三区,国产亚洲成性色av人片在线观,国产91熟女高潮一区二区抖

歡迎來到合肥浪訊網(wǎng)絡(luò)科技有限公司官網(wǎng)
  咨詢服務(wù)熱線:400-099-8848

如何移除通過$emit觸發(fā)的事件監(jiān)聽器?

發(fā)布時間:2025-11-09 文章來源:本站  瀏覽次數(shù):470
在 Vue 中,$emit 用于觸發(fā)事件,而事件監(jiān)聽器是通過 $on 或 v-on (@) 綁定的。要移除由 $emit 觸發(fā)的事件監(jiān)聽器,核心是移除對應(yīng)的事件綁定,而非直接操作 $emit。以下是具體實現(xiàn)方法及場景說明:

一、核心概念澄清

  • $emit:觸發(fā)組件實例上的事件,通知父組件或其他監(jiān)聽者。
  • 事件監(jiān)聽器:通過 $on 或 v-on 綁定的回調(diào)函數(shù),用于響應(yīng)事件。
  • 移除監(jiān)聽器:需針對綁定方式,使用 $off 或銷毀組件來移除。

二、移除通過 $on 綁定的事件監(jiān)聽器

如果事件是通過 $on 動態(tài)綁定的,使用 $off 移除。

1. 移除指定事件的指定回調(diào)

javascript
運行
export default {
  created() {
    this.handleClick = () => {
      console.log('事件觸發(fā)');
    };
    this.$on('custom-event', this.handleClick); // 綁定
  },
  methods: {
    triggerEvent() {
      this.$emit('custom-event'); // 觸發(fā)事件
    },
    removeListener() {
      this.$off('custom-event', this.handleClick); // 移除指定回調(diào)
    }
  }
};

2. 移除指定事件的所有回調(diào)

javascript
運行
this.$off('custom-event'); // 移除該事件的所有監(jiān)聽器

3. 移除組件的所有事件監(jiān)聽器

javascript
運行
this.$off(); // 移除組件上所有通過 $on 綁定的事件

三、移除通過 v-on (@) 綁定的事件監(jiān)聽器

如果事件是通過模板 @eventName 綁定的,有兩種方式移除:

1. 銷毀組件(徹底)

通過 v-if 控制組件銷毀,Vue 會自動清理所有 v-on 綁定的事件。
vue
<!-- 父組件 -->
<template>
  <ChildComponent v-if="showChild" @custom-event="handleEvent" />
  <button @click="showChild = false">銷毀子組件</button>
</template>

<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const showChild = ref(true);
const handleEvent = () => console.log('事件觸發(fā)');
</script>

2. 動態(tài)解綁(不銷毀組件)

通過 重新渲染組件 實現(xiàn)事件解綁。
vue
<template>
  <ChildComponent 
    :key="componentKey" 
    @custom-event="handleEvent" 
  />
  <button @click="componentKey += 1">解綁事件</button>
</template>

<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const componentKey = ref(0);
const handleEvent = () => console.log('事件觸發(fā)');
</script>
當(dāng) componentKey 變化時,組件會重新創(chuàng)建,舊的事件綁定會被銷毀。

四、常見場景示例

場景 1:子組件觸發(fā)事件,父組件移除監(jiān)聽

vue
<!-- 父組件 -->
<template>
  <ChildComponent @child-event="handleChildEvent" />
</template>

<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const handleChildEvent = (data) => {
  console.log('收到子組件事件:', data);
};
</script>

<!-- 子組件 ChildComponent.vue -->
<script setup>
import { emit } from 'vue';
const emit = defineEmits(['child-event']);

// 觸發(fā)事件
const trigger = () => {
  emit('child-event', 'hello');
};
</script>
父組件如需移除監(jiān)聽,可通過銷毀子組件(v-if)或重新渲染(key)實現(xiàn)。

場景 2:動態(tài)添加 / 移除事件監(jiān)聽

vue
<script setup>
import { onMounted, onUnmounted, ref } from 'vue';

const myComponent = ref(null);
let count = 0;

// 定義事件處理函數(shù)
const handleCustomEvent = () => {
  count++;
  console.log('事件觸發(fā)次數(shù):', count);
};

onMounted(() => {
  // 動態(tài)綁定事件
  myComponent.value.$on('custom-event', handleCustomEvent);
});

onUnmounted(() => {
  // 移除事件監(jiān)聽
  myComponent.value.$off('custom-event', handleCustomEvent);
});
</script>

五、避坑指南

  1. $emit 是觸發(fā)事件,不是綁定事件,無法直接移除 $emit,只能移除對應(yīng)的監(jiān)聽器。
  2. 若通過 v-on 綁定事件,Vue 會在組件銷毀時自動移除,無需手動操作。
  3. 若事件是通過 $on 動態(tài)綁定的,必須用 $off 手動移除,否則可能導(dǎo)致內(nèi)存泄漏。
  4. 確保 $off 的參數(shù)(事件名、回調(diào)函數(shù))與 $on 完全一致,否則移除無效。

總結(jié)

綁定方式 移除方式 說明
$on('event', handler) $off('event', handler) 移除指定事件的指定回調(diào)
$on('event', handler) $off('event') 移除指定事件的所有回調(diào)
v-on:event="handler" 銷毀組件(v-if 自動移除所有 v-on 綁定的事件
v-on:event="handler" 重新渲染(key 變化) 舊組件銷毀,事件綁定失效
通過以上方法,可以有效移除由 $emit 觸發(fā)的事件監(jiān)聽器,避免內(nèi)存泄漏和不必要的事件響應(yīng)。

上一條:如何在 Vue 中移除原...

下一條:在Vue中,如何移除一個...

国产在线 一区二区-日韩美所有av电影-日韩美女主播在线一区-欧美日韩国产va另类 | 欧美日韩少妇又长又爽视频网-亚洲a在线免费视频-一区二区三区中文字幕人妻-亚洲国产成人一区二区 | 日韩午夜看大片-密桃av中文字幕-乱丰满的岳伦,网站-精品人妻中文字幕欧美在线 | 久久久久国产精品人妻aⅴ-日本久久电影久久-久久伊人超碰中文字幕-风间由美中文字幕在线 | 久久99热这里只有精品23-岛国av中文字幕在线播放-日韩久久激情99-麻豆成人版在线观看 | 国产福利一区二区三区视频在线-国产一区二区三区18p-国产精品久久久久蜜臀-av99热在线香蕉 | 久久久一二三区-久久精品99久久久久久久久翻译-国产成人91成人精品看片-久久视频就在精品99 | 国产精品三在线观看-日韩二区少妇视频在线-91中文字幕免费视频-91麻豆欧美成人精品 | 国产精品久久久久精品香蕉剃毛-五月天丁香花婷婷亚洲-福利一区二区三区高清视频-色呦呦网站精品国产 | 亚洲国产美女搞比比-欧美 日韩 亚洲 精品 在线-欧美日韩视频在线第一页-日韩成人av高清在线播放 中文人妻熟妇精品乱又伧天美传媒-五月婷,六月丁香-久99久精品视频免费观看v-国产又粗又长又黄又嫩 | 91欧美精美久久久-岛国高清中文字幕av-日韩色视频在线免费观看-懂色a精品欧美日韩懂色 | 国内精品久久久中文字幕-一区二区,中文字幕-91久久久国内精品-绯色av中文字幕一区二区 | 国产日韩精品123-91精品人妻一区二区三区四区-久久,黄色女人-亚洲精品国产熟女久久久第03集 | 日韩精品深夜视频-日韩 欧美一区二区三区-亚洲伊人久久综合网av-免费观看日韩毛片. | 2019中文字幕手机在线第8页-亚洲国产视频你懂得-亚洲女人小便毛茸茸-91久久美女视频 | 久久精品我在看-国产又粗又长又硬又猛电影-日本一区中文字幕在线视频-日韩精品中文字幕在线观看网站大全 | 97久久香蕉国产熟女线看-日韩成人av在线二区-久久主人久久综合久久综合艹尼玛-10国产精品久久久久久 | 国产一区二区三区激情视频-天天干天天日天天操天天日-91大神唐先生1080p在线-日韩精品视频亚洲在线 | 日韩av在线 东京热-久久精品视频亚洲精品视频-久久重口味电影-欧美 日韩一区二区三区 | 欧美 日韩 高清 看国产-国产高清精品久久久久-久久熟女一区二区-五月婷婷深深爱爱 | 9lporny自拍视频免费观看-亚洲av电影一区在线-北条麻妃 人妻 av-日韩激情在线视频播放 | 伊人婷婷久久国产精品-日韩激情视频123-丰满人妻av 1区二区-日韩毛片3m8u | 久久丝袜28p-婷婷久久网视频-天天舔天天摸天天碰-久久精品人人做人人爽电影蜜月 | 99精品又硬又爽又粗少妇毛片-九九九色九九九色噜噜噜色屋-91人妻激情在线四-久久精品国产欧美日韩热 | 欧美最猛黑人黑人猛交-久久久久久精品在线看免费看-日韩一区av福利在线-欧美日韩亚洲欧美h | 久久久久久久免费看片-欧美,日韩不卡视频在线观看-中文字幕日本免费精品-无套内射区二区 | 日本中文字幕人妻秘书-999精品免费视频-国产乱码久久久久久久久久-成人免费av小视频 | 日韩在线观看mm-欧美va天堂va视频va在线-91麻豆国产免费视频-91精品国产91久久久蜜臀 | 91日韩精品久久久久精品-www.中文字幕乱码-久久99精品视频精品-久久久久久久久久一区二区人妻视频播放 | 人妻少妇精品视频在线中文字幕-国产台湾黄色av一区二区-国产精品影视久久久久久久-久久99精品国产.久久久久久 | 麻豆午夜激情福利-久久久久亚洲中文-色婷婷综合久久久久中文97-日本中文字幕久久精品 | 色呦呦国产精品系列-日韩熟妇人妻一区二区三区蜜桃-600av在线视频-中文字幕福利小视频 | 激情人妻日韩一区-国产亚洲中文字幕人-中文字幕精品视频在线-97久久碰国产精品 | 国产精品国产三级国产在线专50-51精产国品久久一二三a区蜜桃-欧美日韩深喉视频在线-日韩av手机在线不卡 | 久久精品人妻少妇一区二区三区-69精品久久久久久久精-97人妻精品免费-岛国日韩精品中文字幕17c | 999视频高清免费-99热这里只有精品免费6-久久6在线观看视频-久久h视频在线观看 | chinese国产麻豆精品-久久久亚洲欧洲日产国产成人-蜜臀久久久久精品久久久-日韩精品亚洲天堂中文字幕 | 国产成人精品视频网站-国产三级男人的天堂-蜜臀aⅴ人妻一区二区三区-国产麻豆剧传媒精品国产av | 日韩精品欧美青色-日韩精品在线免费观看网站-日韩av激情四射-av中文字幕免费播放 | 精品久久久久久久久免费蜜-开心五月婷婷激情国产在线-成人性生活一级黄色片-久久中文网日本字幕 色婷婷av一区二区三区麻豆-久久精品国产97欧美精品亚洲-熟妇人妻品一区二区三区视频-99久久婷婷网站 | 久久人妻精品一区二区综合-91精品人妻人人做-五月婷婷射综合-日韩av在线免费观看高清 |