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

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

在Vue中,如何移除一個組件的特定事件監(jiān)聽器?

發(fā)布時間:2025-11-08 文章來源:本站  瀏覽次數(shù):504
在 Vue 中移除一個組件的特定事件監(jiān)聽器,核心是 “找到事件綁定的源,確保移除時的參數(shù)與綁定完全一致”。以下是針對不同場景的具體實現(xiàn)方法:

一、移除通過 v-on / @ 綁定的事件

1. 組件內(nèi)部移除自身的 v-on 事件

通過 v-on 綁定的事件,Vue 會自動管理其生命周期,組件卸載時會自動移除,無需手動處理。
如果需要在組件內(nèi)部主動移除某個 v-on 事件,可以通過 條件渲染 或 動態(tài)組件 實現(xiàn)。

示例:通過 v-if 重新渲染組件

vue
<template>
  <div>
    <button @click="toggleEventListener">
      {{ hasEventListener ? '移除點擊事件' : '添加點擊事件' }}
    </button>
    <ChildComponent v-if="showChild" @click="handleChildClick" />
  </div>
</template>

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

const showChild = ref(true);
const hasEventListener = ref(true);

const handleChildClick = () => {
  console.log('子組件被點擊');
};

const toggleEventListener = () => {
  hasEventListener.value = !hasEventListener.value;
  // 通過銷毀并重建子組件來移除事件
  showChild.value = false;
  setTimeout(() => {
    showChild.value = true;
  }, 0);
};
</script>

二、移除通過 addEventListener 手動綁定的事件

如果事件是通過原生 addEventListener 手動綁定的,需要在組件卸載時通過 removeEventListener 手動移除。

1. 移除組件內(nèi) DOM 元素的特定事件

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

const myButton = ref(null);

function handleClick() {
  console.log('按鈕被點擊');
}

onMounted(() => {
  myButton.value.addEventListener('click', handleClick);
});

onUnmounted(() => {
  // 移除特定的 click 事件
  myButton.value.removeEventListener('click', handleClick);
});
</script>

2. 移除全局特定事件

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

function handleResize() {
  console.log('窗口大小變化');
}

onMounted(() => {
  window.addEventListener('resize', handleResize);
});

onUnmounted(() => {
  // 移除特定的 resize 事件
  window.removeEventListener('resize', handleResize);
});
</script>

三、移除第三方庫綁定的特定事件

如果組件使用了第三方庫(如 ECharts、Mapbox),需要調(diào)用庫自身的方法來移除特定事件。
vue
<script setup>
import { onMounted, onUnmounted, ref } from 'vue';
import * as echarts from 'echarts';

const chartRef = ref(null);
let myChart = null;

function handleChartClick(params) {
  console.log('圖表被點擊', params);
}

onMounted(() => {
  myChart = echarts.init(chartRef.value);
  // 綁定特定事件
  myChart.on('click', handleChartClick);
});

onUnmounted(() => {
  // 移除特定的 click 事件
  myChart.off('click', handleChartClick);
  myChart.dispose();
});
</script>

四、移除子組件觸發(fā)的特定事件

如果父組件監(jiān)聽了子組件的自定義事件,想要移除這個監(jiān)聽,可以通過 條件渲染 或 動態(tài)組件 實現(xiàn)。

示例:父組件移除對子組件事件的監(jiān)聽

vue
<!-- 父組件 -->
<template>
  <div>
    <button @click="toggleChild">
      {{ showChild ? '銷毀子組件(移除事件)' : '創(chuàng)建子組件(添加事件)' }}
    </button>
    <ChildComponent 
      v-if="showChild" 
      @custom-event="handleCustomEvent" 
    />
  </div>
</template>

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

const showChild = ref(true);

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

const toggleChild = () => {
  showChild.value = !showChild.value;
};
</script>

五、避坑指南

  1. 確;卣{(diào)函數(shù)引用一致
    • 錯誤示例:
      javascript
      運行
      // 綁定匿名函數(shù)
      el.addEventListener('click', () => console.log('點擊'));
      // 無法移除,因為每次創(chuàng)建的匿名函數(shù)引用不同
      el.removeEventListener('click', () => console.log('點擊'));
      
    • 正確示例:
      javascript
      運行
      function handleClick() {
        console.log('點擊');
      }
      el.addEventListener('click', handleClick);
      el.removeEventListener('click', handleClick);
      
  2. 事件捕獲階段參數(shù)匹配
    javascript
    運行
    // 綁定捕獲階段事件
    el.addEventListener('click', handleClick, true);
    // 移除時必須傳入第三個參數(shù) true
    el.removeEventListener('click', handleClick, true);
    
  3. 第三方庫事件移除
    • 許多庫提供了專門的事件移除方法,例如:
      • ECharts: chart.off('eventName', handler)
      • Vue 自定義事件:組件銷毀時自動移除
      • DOM 事件: removeEventListener

總結(jié)

  1. v-on / @ 事件:Vue 自動管理,組件卸載時自動移除。
  2. addEventListener 事件:使用 removeEventListener 手動移除,確保參數(shù)一致。
  3. 第三方庫事件:調(diào)用庫的 off 或類似方法移除。
  4. 子組件事件:通過 v-if 銷毀子組件來移除事件監(jiān)聽。

上一條:如何移除通過$emit觸...

下一條:合肥網(wǎng)站建造之網(wǎng)站建造加...

91大神高清视频在线-亚洲国产av不卡婷婷-激情五月婷婷国产色综合-日韩人妻熟女中文字幕乱码 | 欧美日韩色帝国-二区三区四区中文字幕-国产欧美日韩一区二区国内-91久久精品人妻一区二区三 | 婷婷丁香久久五月综合-69久久夜色精品国产-中文字幕组第一页麻豆-亚洲va欧美va国产综合888 | 中文字幕在线乱码播放-国产99re6在线视频播放-久久久人妻少妇一区二区三区-精品久久久久久久久久蜜臀 | 成人首页国产精品亚洲-美日韩av高清不卡免费观看-国产成人精品免费看在线播放-麻豆国产精品无毒视频 | 天天操天天摸天天射天天爽-日韩精品一级在线免费观看-日韩 欧美 国产第一页-国产熟女成人小视频 亚洲熟妇av一区二区三区四季-中文字幕在线视频亚洲-麻豆成人免费在线观看视频-久久人人妻久久 | 91久久国产精品九色-91福利最新在线-91精品一区二区三区蜜桃的-日韩人妻中文字幕 | 精品香蕉一区二区三区-色婷婷av一区二区三区软件-97超碰在线视频-日韩免费在线中文字幕 | 久久亚洲一区二区三区舞蹈-超碰porn国产-日韩美女免费在线观看-av 日韩 中文字幕 | 精品一区二区三区四区五区在线观看-亚洲欧美日韩成人在线激情网-丰满人妻 中文字幕-亚洲五月综合在线婷婷 | 人妻少妇久久中文字幕-国产又粗又深又猛又爽的视频网站-日韩欧美中文字幕人妻第一页-思思99热re久这里有精品 | 欧美日韩一区二区三区视频-丰满人妻在线一区二区三区-久久69精品久久9999-激情 自拍 偷拍 | 国产99视频精品免费观看9-欧美蜜臀一区二区三区-婷婷激情五月在线-97超碰亚洲天堂中文字幕网 | 日本乱中文字幕系列-精品久久久噜噜噜久久x99a-国产一区二区三区最好精华液-国产成人精品微拍视频网站 | 久久久亚洲熟妇一区二区三区-久久视频在线观看一区-国产二区中文字幕在线观看-91精选一区二区三区 | 亚洲国产欧美在线人成aⅴ-国色天香精品二区三区-久日视频在线观看免费-91精品久久久久精品一区 | 91熟女精品国产-人妻中文字幕视频-开心五月激情综合婷婷-激情五月天中文字幕色 | 久久爱这里只有久久精品-久久久久中文字幕国产-欧美日韩av在线免费观看-av在线资源导航网 | 亚洲另类人妻一区二区-国产精品69久久久久久久-蜜臀色诱一区二区三区-99久久精品国产电影 | 亚洲制服丝袜人妻另类在线-日韩一区免费在线观看网址-久久久亚洲熟妇熟女精品-久久久久久精品免费非洲 | 人人妻久久人人澡人人爽人人精品-av一区二区三区人妻少妇-久久精品国产亚洲av黄瓜-色婷婷在线观看视频免费观看视频观看 | 日韩女女同志vedio-久久久精品久久久精品久久久精品-性做久久久久久久久一区二区-99热精品素人在线国产 | 色九九色九九色九九-中文字幕亚洲综合国产-91亚洲精品啪啪啪-欧美国产日韩亚洲麻豆 | 一区二区三区四区日韩久久-久久精品视频在线看24-国产精品嫩草久久久久久久-日韩精品你懂的视频 亚洲成人av夜夜骚-精品伦一区二区三区视频-日韩欧美p片内射在线观看视频-九九99久久精品在免费线 | 色婷婷激情五月综合-日韩欧美情色片-日韩av在线观看不卡-蜜桃系列一区二区三区 | 9久精品久久综合久久超碰-久99精品免费视频-91久久精品国产成人久久-欧美久久久久久久久系列 | 欧美精品久久久久久一二三黑人-亚洲视频中文字幕另类小说综合网-另类av一区在线-亚洲综合久久一区二区三区蜜月 | 天天干夜夜操免费视频-久久99久久99精品免费-玖玖在线中文字幕网-人妻精品一区一区三区蜜桃91 | 国产超碰91人人做人人爱-久久一区二区三区欧美日韩国产裸体-蜜桃视频在线观看一区二区三区-国产欧美日韩综合一区二区 | 99国产人妻一区二区-亚洲欧美日韩三级在线-久久99精品久久久久久综合-国产大屁股精品视频 | 天堂网av伊人久久-久久精品视频在线观看一区二区-熟女人妻精品综合久久-久久精品99视频免费观看 日韩精品欧美青色-日韩精品在线免费观看网站-日韩av激情四射-av中文字幕免费播放 | 婷婷综合尤物精品国产-国产精品久久久一级-美女视频一区二区3区-中文字幕av最新地址 | 91麻豆国产福利免费片-日韩在线播放最新av-欧美丰满熟妇网-激情久久伊人婷婷 | 欧美美足美脚一区二区-激情丁香婷婷久久-91福利区试看体验区-国产又粗又细又黄视频 | 999国内精品视频在线观看-亚洲丰满性熟妇a v-a天堂最新中文在线-日韩黄色在线 中文字幕 | 精品久久久久久中文三级-蜜桃久久久久精品-日韩欧美中文在线tv-国产成人亚洲综合av婷婷 | 999视频高清免费-99热这里只有精品免费6-久久6在线观看视频-久久h视频在线观看 | 日韩熟妇中文字幕-国产欧美亚洲一区二区-少妇毛片一区二区三区色哟哟-91人妻丝袜美腿一区二区 | 日韩大尺度av在线-成人av在线观看免费网址-久久免费视频观看99-日本精品免费一区二区三区 | 2020久久中文字幕-91精品国产综合久久久在线观看-成人国产激情视频在线观看欧美-久久中文字幕亚洲精品最新, | 国产日本久久中文字幕-中文字幕成人免费观看-91久久精品国产原创91久久-99精品视频在线观看视频在线 |