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

日韩人妻熟女中文字幕aⅴ网站-国产极品美女扒开粉嫩小91-av中文字幕在线国产-国产精品成人av久久999d3 | 神马午夜久久久av-中文日韩av在线免费观看-日韩欧美一级一区二区-国产激情在线视频免费 | 91久久久久久在线-亚洲天堂中文字幕av手机版-国产亚洲欧美一区二区-色婷婷av一区二区三区免费 | 日韩成人免费片-色狠久av北条麻妃-久久综合日韩精品-粉嫩小仙女一区二区三区 | 国产精品成人在线网站-国产一区二区三区小向美奈子-99精品久久久久久久久久久久-日韩精品人妻免费视频 | 亚洲精品午夜久久久久久久久久-国产精品高潮呻吟av99-岛国av在线一区二区三区-日本一区二区三区四区在线 | 日韩av成人一区二区三区-欧美熟妇久久精品-日韩成人在线免费精品视频-久久久精品国产亚洲综合久久久国产 | 久久嫩草国产系列-国精产品乱码一区一区三区-欧美日韩国产精品第55页-超碰在线天天看 | 成人黄动漫网站在线观看-久久精品人妻综合av_-老色批91久久久久久久久-日韩国产欧美精品 | 久久综合婷婷国产二区高清-蜜桃精品一区三区-欧美午夜精品久久久久久8888-97超碰色偷偷 | 中日韩av在线播放-美女短片在线视频福利资源-久久久久久人妻中文-国产又粗又猛又色又黄免费视频 久久久久久亚洲熟女-91国产高清久久久久久-亚洲伊人久久大香线蕉av-精品久久久久久18禁 | 2019亚洲熟女中文字幕-亚洲av区无吸码字幕中文色-人妻丝袜中文字字幕-91成人在线精品视频 | 精品日本加勒比一区二区三区-婷婷丁香六月中文字幕-蜜桃精品久久久久久-久久久久久久亚洲区婷婷 天天干天天躁久久综合-1024人妻一区二区三区-蜜桃久久久亚洲精品成-国产欧美日韩各 | 99国产精品欲av在线-国产精品欧美久久久久久-久久综合亚洲鲁鲁五月久久-91精品国产乱码久久久久久久久 | 97超碰免费人人澡-中文字幕久久免费-国产成人av亚洲精品久久久久-精品久久久久久久人妻蜜臀av | 久久久久久久久久久国产-91狠狠综合久久久久久久-巨乳人妻中文字幕视频-99精品国产99久久久久久福利 | 2021中文字幕在线永久免费-欧美人妻a∨中文字幕在线-国产精品美女久久久久av毛片-久久一区二区三区蜜臀 | 18禁国产麻豆精品久久久久久-超碰人妻av狠狠干-色婷婷综合久久久久久中文-国产av一区二区青青草原 | 99久久久免费精品国产-成人午夜aaaa片-成人国产一区在线观看-婷婷久久一婷婷 | 日韩免费特级黄色片-久久爱免费视频16-中文字幕一区二区三区50路-欧美丰满熟妇激情网 | 开心激情五月天在线视频观看-久久久久999国产精品-国产又粗又黄又猛的视频-伊人网伊人网伊人网伊人网 | 国产又粗又猛又爽又黄视频网站-亚洲夜夜狠狠久久综合-人妻中文字幕在线免费观看-日韩妹子精品视频在线观看 | 免费欧美午夜激情在线观看-国产精品久久久中文字幕-少妇人妻一区2区中文字幕-99精品视频在线观看免费播放 | 亚洲精选视频在线观看-91超碰在线资源网-91在线精品一区二区-日本精品一区二区三区在线免费 | 亚洲美女做色爱禁图片-色综合91久久精品中文字幕素股-成人中文字幕免费视频-国产精久久久久久网站 | 久久亚洲精品国产美女写真集下载-国产性―交一乱―色―情人免费看-91国偷自产一区二区三区观看-久久人妻www | 99最近更新偷拍视频-av天堂一二三四最新网址-一区二区三区日韩欧美在线观看-2019年中文字幕在线观看视频 | 五月综合婷婷在线-91黑人精品一区二区三区-日韩欧美一级片看看-中文字幕在线亚洲天堂 | 风间由美一区二区三区在线观看-中文字幕熟女久久av-91麻豆亚洲精品-久久久精品人妻av | 天天想太多脑袋感觉很紧绷怎么办-99久久国产日韩欧美-日韩欧美一区二区在线-麻烦视频一区二区三区 | 国产视频欧美视频一区二区-久久久久久久久久久久久久久久9-久久er热这里只有精品视频-久久综合亚洲久久另类 | 亚洲中文字幕第一页第二页-欧美特黄大片一级淫片久久-欧美熟妇极品另类-久久久视频免费观看视频观看 | 国产精品久久久久aaaa竹菊-91精品国产免费久久国语打电话-激情综合网,激情五月天-熟妇高潮一区二区三区 | 999精品网址视频-国产又粗又长的视-精品人妻一区二区三区久久嗨-综合激情六月久久婷婷 | 久久夜亚洲一区-欧美人妻369你懂的视频-日韩在线视频观看三区-日韩中文字幕91在线看 | 日本少妇人妻久久久-蜜桃视频在线一区二区三区-亚洲精品色视频在线-亚洲人成伊人成综合网99精品 激情综合色综合久久丁香-精品久久久久女人18-av久久伊人精品中文字幕-久久久久人妻一区二区三区vr2 | 激情五月婷婷色综合-国产又黄又粗又爽又猛的视频-亚洲国产制服丝袜性色av在线-久久99婷婷国产蜜臀 | 日韩欧美一区二区三区久-熟女人妻精品一区二区三区99-久久99永久免费看-日本亚洲欧美韩国一区 | 91久久久久久在线-亚洲天堂中文字幕av手机版-国产亚洲欧美一区二区-色婷婷av一区二区三区免费 | 日韩三级在线视频-日韩人妻熟女在线-国产又黄又粗又猛视频-欧美日韩亚洲视频在线观看 | 欧美色欧美亚洲另类二区不卡-国产免费自拍色视频-日本妻子中文字幕-人妻精品久久久久中文字幕一 女同另类中文字幕-久久九九99这里只有精品-日韩欧美激情不卡-亚洲天堂操操操操操操 |