国产女主播成人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中,如何移除一個...

国产黄色小视频看看-久久大久久就久久精品欧美-日韩精品视频在线免费观看首页-国产麻豆精品视频网 | 91成人在线观看高潮-久久久99视频在线免费观看-91人妻精品一区二区在线看-成人黄色一级片在线观看 | 激情五月婷婷色电影-久久超级碰中文字幕-日韩一卡二卡一区av-性高潮久久久久久久久免费 | 91性高湖久久久久久久久久久-久久老司机午夜精品-久久精品网络视频免费观看-91人妻精品久久成人精品视 | 99精品久久99久久久久胖女人-国产精品99久久久久久女同女-精品久久久久乱色熟女影视-日韩视频 亚洲 | 亚洲一区二区三区乱码av-日韩在线午夜美女精品视频-亚洲欧美丝袜另类视频-超碰在线观看免费国产 最新国产精品精品视频 视频-五月天中文字幕av在线播放-成人人妻av999-超碰人人爱人看人人能97 | 91激情91激情-精品少妇人妻在线一区二区-超碰国产婷婷老熟女伊人-精品一区二区视频在线观看 | 日韩国产毛片在线-av资源 中文字幕-欧美日韩制服丝袜在线-亚洲精品乱码久久久久久97 | 亚洲第一个黄色dvd内射-91麻豆国产精品91久久久-亚洲成人免费a v-国产中文字幕日韩黑人 | 人妻少妇久久中文字幕-国产又粗又深又猛又爽的视频网站-日韩欧美中文字幕人妻第一页-思思99热re久这里有精品 | 日韩美女 中文字幕-日日夜夜夜国产精品-国产精品久久久久久久美男-久久婷婷久久久 | 久久久月婷婷天天操天天操-老熟女一区二区在线-91精品国产老熟女系列碰碰-日韩欧美激情视频一二三区 | 18禁国产精品久久久久久男男-7799精品久久日韩综合-人妻中文字幕av.com-欧美日韩在线视频不卡 | 久久97中文亚洲精品久久频-久久久久99国产-久久精品视频免费天天看-大香蕉久久精品一区二区字幕 日本精品一区二区三区别区-亚洲欧美日韩中文字幕一区二区-蜜桃久久精品在线-久久久久精品久久久水蜜桃导演 | 91人妻人人澡人人爽人人精品一-国产大屁股一区二区三区-日韩中文字幕国产一区-久久久久久爱爱 | 黄色亚洲日午夜在线-日韩一区二区三区水蜜桃-久久99热只有频精品8国语-91成人国产视频在线观看 | 激情五月婷婷综合区-精品人伦一区二区三区蜜桃视频-99久热er在线观看-蜜臀久久99精品久久久久久久情 | 国产人妻熟女一区二区三区四区-蜜臀久久99精品久久一区二区-久久国产麻豆精品-日本中文字幕系列网站 | 超碰少妇激情v-超碰97中文字幕在线-久久久国产精品粉嫩av-精品一区二区三区四区视频区 | 日韩欧美资源一区二区三区-欧美 日韩 亚洲 第一页-高潮av一区二区三区-中文字幕 日韩二区 | 97久久精品人人人妻人人1-久久这里只有精品18岁-日韩成人自拍视频在线-人妻少妇被猛烈插入中文字幕 | av天堂久久天堂av-日韩精品手机在线观看视频-国产99视频精品免视看9-欧美激情视频一区二区三区四区 | 亚洲丰满熟妇熟女乱网-久久久久人妻一区精品下-久久久久久人妻一区二区三区-久久久久亚洲高潮 | 久色蜜臀一区二区三区-精品亚洲成a人在线观看9-国产精品高潮呻吟久久av嫩-久久热18国产 | 亚洲一区二区熟女人妻-久久国内精品视频在线观看-日韩少妇熟女人妻-日韩美女啪啪啪啪啪啪 | 操日本丰满熟妇-日韩中文字幕av在线免费观看-91精品一区二区三区-日韩熟女自拍偷拍色图 | 激情五月中文字幕在线-日韩精品人妻中文字幕不卡-国产资源在线播放6-精品久久中文字幕版 | 久久综合网五月天高清婷婷熟女-日韩偷拍av网址-日韩av一区二区…-老熟女999国产老熟女精品 | 久久精品人妻少妇一区二区三区-69精品久久久久久久精-97人妻精品免费-岛国日韩精品中文字幕17c | 国产精品久久久久久亚洲欧洲-911精品产国品一二三产区-色婷婷在线观看免费视频-日韩欧美日韩精品在线 | 99精品一区二区人妻-久久久中文精品字幕-久久久久久精品人妻一区二-欧美mv日韩mv国产精品网站 | 国产一区二区在线观看蜜臀av-亚洲乱码久久久久-欧美一区二区三区…-久久国产精品嫩草 | 五月激情视频在线-91久久久国产一区二区-日韩熟妇av网站-欧美日韩少妇高潮喷水 | 乱子伦一区二区三区高清免费-精品人妻少妇久久一区二区三区-欧美黑妇50一区二区三区视频-一道本亚洲综合鲁鲁五月天 | 麻豆成人黄色小视频网站-少妇人妻日韩中文字幕av黄黄-成人精品人妻在线观看-欧美丰满熟女性久久久 | 婷婷av国产精品推荐-亚洲欧美精品卡一卡二-久久久99人妻一区二区三-91人妻精品国产综合久 | 国产人妻熟女一区二区三区四区-蜜臀久久99精品久久一区二区-久久国产麻豆精品-日本中文字幕系列网站 | 亚洲免费在线观看一区二区-国产午夜精品久久久久精品免费看-麻豆精品在线观看,-青青青高清国产原视频在线观看 | 精品熟女免费视频-精品国偷自产一区二区三区免费-国产成人亚洲综合a∨婷婷图片-成人av黄片在线看 | 麻豆免费在线观看高清视频-日本中文字幕在线观看电影-日韩情趣视频在线观看-成人激情av在线免费观看 | 久久艹精彩视频-国产一区,二区视频-91激情啪啪网站-日韩国产成人在线 |