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

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

在Vue中,如何移除多個事件監(jiān)聽器?

發(fā)布時間:2025-11-04 文章來源:本站  瀏覽次數(shù):486
在 Vue 中移除多個事件監(jiān)聽器,核心思路是 “集中管理事件與回調(diào)的關(guān)聯(lián)關(guān)系,在合適時機批量遍歷移除”,避免遺漏或重復(fù)操作。以下是具體實現(xiàn)方法,覆蓋 Vue 3 和 Vue 2 場景:

一、Vue 3(組合式 API):用數(shù)組 / 對象管理事件

1. 用數(shù)組批量管理(適合同類型事件)

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

const btnRef = ref(null);
const events = [
  { type: 'click', handler: handleClick },
  { type: 'mouseenter', handler: handleMouseEnter }
];

function handleClick() { /* ... */ }
function handleMouseEnter() { /* ... */ }

onMounted(() => {
  events.forEach(({ type, handler }) => {
    btnRef.value?.addEventListener(type, handler);
  });
});

onUnmounted(() => {
  events.forEach(({ type, handler }) => {
    btnRef.value?.removeEventListener(type, handler);
  });
});
</script>

2. 用 Map 管理(適合多類型 / 多元素)

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

const boxRef = ref(null);
const eventMap = new Map([
  ['mousedown', handleMouseDown],
  ['mousemove', handleMouseMove],
  ['mouseup', handleMouseUp]
]);

function handleMouseDown() { /* ... */ }
function handleMouseMove() { /* ... */ }
function handleMouseUp() { /* ... */ }

onMounted(() => {
  eventMap.forEach((handler, type) => {
    boxRef.value?.addEventListener(type, handler);
  });
});

onUnmounted(() => {
  eventMap.forEach((handler, type) => {
    boxRef.value?.removeEventListener(type, handler);
  });
});
</script>

二、Vue 2(選項式 API):在 beforeDestroy 中批量移除

javascript
運行
export default {
  data() {
    return {
      eventListeners: [
        { el: 'window', type: 'scroll', handler: this.handleScroll },
        { el: 'document', type: 'click', handler: this.handleClick }
      ]
    };
  },
  methods: {
    handleScroll() { /* ... */ },
    handleClick() { /* ... */ }
  },
  mounted() {
    this.eventListeners.forEach(({ el, type, handler }) => {
      const target = el === 'window' ? window : document;
      target.addEventListener(type, handler);
    });
  },
  beforeDestroy() {
    this.eventListeners.forEach(({ el, type, handler }) => {
      const target = el === 'window' ? window : document;
      target.removeEventListener(type, handler);
    });
  }
};

三、第三方庫事件的批量移除

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

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

// ECharts 事件映射
const chartEvents = [
  ['click', handleChartClick],
  ['legendselectchanged', handleLegendChange]
];

function handleChartClick() { /* ... */ }
function handleLegendChange() { /* ... */ }

onMounted(() => {
  chart = echarts.init(chartRef.value);
  chartEvents.forEach(([type, handler]) => {
    chart.on(type, handler);
  });
});

onUnmounted(() => {
  chartEvents.forEach(([type, handler]) => {
    chart.off(type, handler);
  });
  chart.dispose();
});
</script>

四、避坑指南

  1. 確;卣{(diào)函數(shù)引用一致
    • 錯誤:用匿名函數(shù)綁定
    • 正確:用具名函數(shù)或 useCallback 緩存
  2. 捕獲階段參數(shù)匹配
    javascript
    運行
    // 綁定
    el.addEventListener('click', handler, true);
    // 移除
    el.removeEventListener('click', handler, true);
    
  3. 動態(tài)元素的事件委托 對 v-for 列表,優(yōu)先用事件委托減少監(jiān)聽:
    vue
    <ul @click="handleItemClick">
      <li v-for="item in list" :data-id="item.id">{{ item.name }}</li>
    </ul>
    

總結(jié)

  • 管理方式:用數(shù)組 / Map 存儲事件配置,集中管理
  • 移除時機:Vue 3 在 onUnmounted,Vue 2 在 beforeDestroy
  • 核心原則:綁定與移除的參數(shù)(類型、回調(diào)、捕獲階段)必須完全一致

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

下一條:讓網(wǎng)站走向成功的五大內(nèi)容...

熟女一区二区三区四区五区-1区2区3区在线播放-伊人久久88综合网-日韩人妻激情一区 | 精品熟女免费视频-精品国偷自产一区二区三区免费-国产成人亚洲综合a∨婷婷图片-成人av黄片在线看 | 日韩成年人在线电影-国产日韩欧美在线观看?-2020最新中文字幕在线-免费观看一区二区三区欧美 | 大香蕉久久综合精品-麻豆免费观看高清完整视频-精品人妻一区二区免费av-久久精品超碰在线 | 麻豆av黄片免费观看大全-久久精品人人爽人人爽-91资源在线免费看-91亚洲精品久久久蜜桃 | 999精品视频在线免费观看-熟女人妻久久久一区二区蜜桃-蜜臀久久精品久久久久久久久久-欧美日韩极品一区二区三区 | 999国内精品视频在线观看-亚洲丰满性熟妇a v-a天堂最新中文在线-日韩黄色在线 中文字幕 | 日韩激情第一页-操老女人91妇女老熟女-97精品人妻一区二区三-久久久久精品亚洲中文字幕 | 人妻av中文字字幕第一-欧美日韩在线黄色-亚洲精品小视频在线-欧美日韩一区二区三区五区 | 2018中文字幕在线观看视频-国产精品 中文字幕 有码-福利网站在线中文字幕-一本色道久久亚洲精品网 | 国产人妻一区二区三区四区-亚洲精品日韩在线观看视频网站-极品人妻久久久久av-久久综合老色鬼网站 | 丰满熟女精品一区二区三区-91精品久久久久久久久青青-久久久97人妻视频-久久在视频精品 | 亚洲乱色熟女一区二区三区四区-日本japanese极品少妇-国产三级久久久精品-精品久久99在线观看 | 久久热在线观看免费视频-国产精品99久久久久久夜夜嗨-欧美精品国产白浆久久久久-777色婷婷av一区二区三99 | 日韩欧美国产制服丝袜-18禁国产91精品久久久久久-久久综合色鬼色88-国产'av一区二区三区 | 99精品久久99久久久久胖女人-国产精品99久久久久久女同女-精品久久久久乱色熟女影视-日韩视频 亚洲 | 成人时间停止器在线观看av-国产成人 综合 亚洲-中文字幕日韩人妻乱码-国模精品一区二区三区视频 91在线观免费观看-日韩欧美人妻中文字幕影院-av在线播放青青草-成人av高清在线区三区二区一 | 91社《国产在线看-国产欧美一区二区三区蝴蝶-亚洲 欧洲 日韩 综合av在线-色偷偷91久久综合噜噜噜 | 日韩欧美激情视频在线观看-欧美成人精品三级在线观看播放-久久婷婷六月综合综合色啪-日韩毛片aa免费看 | 91 资源在线观看-人妻久久中文字幕一区-精品国产999免费视频-99伊人久久大香线蕉成人网 | 日韩成年人在线电影-国产日韩欧美在线观看?-2020最新中文字幕在线-免费观看一区二区三区欧美 | 欧美日韩国产综合视频在线观看-久久中文字幕完整版-久久99热免费最新版-日韩女v在线观看视频播放 | 高清在线一区二区不卡视频-国产麻豆成人av映画-婷婷在线中文字幕视频-9久精品久久综合久久超碰 | 国产乱人妻一区二区三区四-69亚洲精品久久久蜜桃-视频一区人妻中文字幕-亚洲va天堂va国产va久 | 99久久精品99-亚洲欧美日韩久久网站-欧美mv日韩mv国产免费大片-欧美日韩亚洲成人免费 | 欧美中文字幕视频-精品人妻一区二区三区人妻斩-蜜臀a v在线一区二区-国产又粗又黄 又爽又硬视频 精品人妻少妇一区二区三区四区-超碰国产原创在线观看-91中文字幕亚洲精品乱码在线-久久国产高清字幕中文 | 成人免费视频国产免费麻豆网站-久久人妻熟女一区二区-综合久久婷婷激情-久久人妻少妇嫩草tv蜜桃 精品一区二区人妻h-不卡一区二区三区四区在线观看-日韩av一区二区网址-69久久精品费精品国产 | 夜夜骚av.一区二区三区-日韩精品免费人成视频观看-免费精品日韩视频-色婷婷一二三区av | 国产精品久久久久久久白浆-91久久久久久视频盛宴-东京热人妻av一区二区三区-欧美日韩亚洲精品 | 国产日本久久中文字幕-中文字幕成人免费观看-91久久精品国产原创91久久-99精品视频在线观看视频在线 | 在线视频中文字幕网站-亚洲国产麻豆系列-国产福利精品小视频-精品中文字幕人 | 久久精品在线观看高清-国产成人精品视频午夜-精品国产18禁污污-成人免费午夜免费视频 | 91精品综合一区二区三区-国产亚洲欧美日韩看国产-97人妻精品一区二-国产成人av网站免费入口 | 久久久久漂亮女人之一-激情激情激情偷拍偷拍偷拍-嫩草av啪啪自拍-久久久91人妻精品蜜桃 | 精品视频在线你懂的-97一区二区三区四区-亚洲中文字幕国产精品-欧美日韩中文制服人妻 | 91精品人妻一区二区三区四区91-国产精品91网-久久蜜桃77 77-成人h动漫精品一区二区动漫 | 激情六月天亚洲婷婷-国产精品麻豆午夜在线-国产成人综合精品99久久久久-成人精品国产亚洲av久久 国产又大又长又粗又硬视频-青草精品视频在线中文字幕-麻豆综合视频在线观看-99热这里只有精品9999 | 国产人妻熟女一区二区三区-日韩精品色哟哟-91长腿极品美女宿舍美女-日韩国产人妻一区二区 | 日韩中文字幕在线观看黄色-99久久精品热在线-日韩亚洲欧美啊啊啊-人妻中文字幕超碰在线 | 国产av天堂亚洲av刚刚碰-伊人色综合激情-激情综合网激情激情五月-久久91一区二区精品 | 国产伦精一品二品三品app-亚洲人妻av在线电影-日韩av人妻在线-激情人妻文学污污 |