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

歡迎來到合肥浪訊網絡科技有限公司官網
  咨詢服務熱線:400-099-8848

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

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

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

1. 組件內部移除自身的 v-on 事件

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

示例:通過 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. 移除組件內 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),需要調用庫自身的方法來移除特定事件。
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)組件 實現。

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

總結

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

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

下一條:合肥網站建造之網站建造加...

久久国产3 p精品-久久婷婷亚洲伊人-蜜臀av我不卡-久久精品少妇一区二区 | 日韩成人免费一级电影-99国产手机在线播放-天天干天天日天天操人人搞-久久精品乱子伦一区二区三区 | 亚洲成年人在线天堂-人妻精品久久久久中文字幕偷-日韩少妇之情色-日韩在线1区2区3区 | 丝袜日韩另类亚洲-婷婷激情深爱网-成人精品一区二区三区-91精品人妻人人做人人爽人人澡 | 精品人妻一区二区资源-欧美激情日韩激情亚洲最大-国产日韩欧美在线播放不卡-2019久久久高清日本道 | 久久草99精品久久-日韩精品在线成人观看-麻豆精品视频网站在线观看-97久久人妻一区二区三 | 日韩亚洲人妻中文字幕-日韩成人av电影国产-成人av电影天堂网-亚洲精品 国产精品 | 91久久精品九色一区二区三区-国产精品久久久男同-亚洲国产久久久久久久久久久久-国产极品久久久久久久av电影 | 9久久婷婷国产综合精品性色-日韩日韩日韩日韩日韩日韩av-99久久亚洲精品婷婷-日韩激情中文字幕视频 | 日韩又粗又猛又爽又黄的视频边-日韩 欧美 中文字幕 制服-天天舔天天日天天插-国产又大又长又粗又黄 | 青青青青青青青青青国产精品视频-亚洲午夜精品久久久久久成年-人妻中文字幕精品一区二区97-人妻av中文字幕影视资源站 | 中文字幕成人精品一区-日韩 亚洲 欧美 综合-麻豆午夜在线视频-国产成人99在线播放 | 婷婷的五月天爱爱-久久99国产综合色-四季av一区二区三区国产-一区二区麻豆国产在线观看 | 日韩在线观看伦理精品视频网站免费-欧美日韩成人在线视频播放-久久久精品少妇3p在线观看-北条麻妃超碰av在线播放 | 激情五月婷婷色电影-久久超级碰中文字幕-日韩一卡二卡一区av-性高潮久久久久久久久免费 | 国产aⅴ性av色av-丰满人妻一区二区三区免费观看软件-亚洲国产精品久久国产精品99-欧美人妻天天爽夜夜爽 | 欧美不卡一区二区视频-欧美 日韩 国产 第一页-日本va欧美va欧美va-日韩欧美一区二区三区在线 | 久久久久久精品一区二区三区四区-国产成人精品午夜在线播放-精品中文字幕人妻专区-久久婷婷亚洲av | 91福利体验区试看30秒-国产一区二区免费在线视频-久久综合色天天久久综合图片-久久久精品免费少妇 | 手机看片日韩日韩tv-国产免费久久久久久久9999-91久精品人妻中文一区二区-伊人久久草视频在线 | 日韩在线观看视频区一区二-亚洲老熟妇另类-亚洲欧美韩国妖精视频-久久精品国产9久久综合 | 99热在线精品首页播放-日韩一级片黄色片-亚洲肥婆一区二区三区-天天插天天日天天射天天干 | 性欧美极品xxxx欧美一区二区-伊人色综合久久天天看-久久婷婷综合五月天啪网-久久久久国精品产熟女久色 | 久久久久久久久久久少妇性高潮-亚洲 自拍 熟女-欧美视频亚洲视频一区二区三区-人妻懂色av性色av蜜桃av | 欧美不卡一区二区视频-欧美 日韩 国产 第一页-日本va欧美va欧美va-日韩欧美一区二区三区在线 | 91熟女成人精品一区二区-成人福利片在线观看-蜜桃臀久久久蜜桃臀久-久久久久久91精品店 | 熟女吧一区二区三区-狠狠综合久久久久尤物-99久久99九九精品免费-久久亚洲女同中文字幕人妻 | 欧洲一区二区视频在线观看-www婷婷综合-大香蕉 伊人 久久-日韩激情在线观看一区 | 色九九色九九色九九-中文字幕亚洲综合国产-91亚洲精品啪啪啪-欧美国产日韩亚洲麻豆 | 91婷婷韩国欧美一区二区-99精品色国产综合久久久蜜臀-日韩美女在线观看免费-亚洲综合婷婷久久十月 | 加勒比中文人妻字幕在线视频-国产一区二区三区福利视频在线观看-亚洲欧美日韩丝袜美腿第一页-日韩欧美二区在线播放 | 久久热国产在线观看视频-日韩精品在线播放网址-日韩美少妇中文字幕-.一区二区三区在线 | 欧洲 | 日韩一二三区av在线-日韩人妻熟女在线中文一区-免费在线观看中文字幕av-日韩欧美p片内射 | 51精产国品一二三产区区-中文字幕,亚洲精选-亚洲欧美日韩另类综合-中文字幕精品在线一区 | 亚洲av产在线精品日韩一页-国产成人91亚洲精品-日韩精品情色视频-久久久久久久久人妻一区精品 | 一本色道久久一区二区-日韩精品久久久久久-狠狠综合久久88亚洲-国产精品va久久久 | 久久亚洲私人国产精品99-欧美日韩一区二区三区-av开心六月色婷婷-欧美日韩亚洲一卡二卡三卡四卡不卡 | 18禁国产精品久久久久久久久-亚洲制服丝袜人妻中文字幕-美日韩视频在线看-日韩午夜精选在线 | 美女国产美女黄色-五月激情综合婷婷久久-美日韩av午夜在线-在线观看日韩毛片网站 | 东京热久久免费av-h视频在线观看亚洲-国产人妻熟妇一区二区-亚洲热情av中文字幕 | 欧美人妻3p一区二区三-日韩一区二区三区四区高清-久久66热人妻偷产精品9-人妻熟女一区二区三区国产图片 |