国产女主播成人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)容...

人人妻人人澡人人爽人人欧美一区-97超精品在线观看-久久精品99国产精品日本-麻豆嘿咻免费视频 | 日韩一二三区av在线-日韩人妻熟女在线中文一区-免费在线观看中文字幕av-日韩欧美p片内射 | 久久久人人妻人人做人人爽-少妇人妻偷人精品一区二区-国产超碰人人做人人爱亚洲国产-69精品久久久久久精品 | 中文字幕人妻中出在线一区-久久精品亚洲午夜-久久久久久久一区二-丝袜亚洲精品中文字幕 | 超碰在线网站成人-在线播放三级黄色日韩av-麻豆国产精品va女在线观看-人妻久久搭讪中出电影 | 久久中文字幕人妻熟女少妇-国产日韩欧美自拍图片-蜜臀午夜av一区二区三区-av日韩中出在线 | 乱子伦一区二区三区高清免费-精品人妻少妇久久一区二区三区-欧美黑妇50一区二区三区视频-一道本亚洲综合鲁鲁五月天 | 国产精品a62v久久久久久-国产成人自拍视频免费在线观看-欧美激情图片一区二区-精品区二区三区在线观看 | 五月激情丁香花自拍-julia中文字幕一区二区三区-韩国av漂亮的人妻-成人黄色av电影在线观看 | 91人妻人人澡人人爽人人稍精品-日韩精品深夜久久久久久-久久精品国产亚洲av一卡二卡-久久人妻一区二区三区四区 | 国产极品视频一区二区三区-婷婷综合久久伊人-日韩三级av在线免费观看-1024人妻一区二区三区69 | 2020中文字幕在线-秋霞特色大片免费的-婷婷俺来也久久-久久99精品久久99 | 91久久国产综合久久91精品熟妇-国产精品久久久久三级-日韩中文字幕在线观看视频网站-久久精品视频久久青青草视频 | 日本久久一区二区三区-欧美不卡一区二区视频在线观看-91精品国产高清久久久久-精品少妇一区二区三区粘 | 日韩又粗又猛又爽又黄的视频边-日韩 欧美 中文字幕 制服-天天舔天天日天天插-国产又大又长又粗又黄 | 国产精品精品久久久-国产精品久久久久粉嫩小-91熟女激情视频-国产精品99久久久久久精品人 | 人人妻人人看人人干-亚洲欧美日韩在线观看视频-丁香婷婷八月精品国产-日韩精品口爆吞精在线观看 av中文字幕在线观看在线-久久久久精品国产乱码78m-国产麻豆剧传媒精品国产av吴梦-69中文字幕一区二区三区 | 久久久久久久久久一区二区三区四区-3p少妇一区二区三区-国产a v韩国女主播-2018年中文字幕理论视频 | 日韩精品中文字幕少妇-久久看毛片黑人操亚洲人妻视频-精品人妻一区二区.三区av-色婷婷综合久久久久国产精品 | 激情亚洲精品狠狠操-色婷婷av一区二区三区四区-欧美日韩成人网一区-北条麻妃的av作品在线观看 | 久久婷婷色一区二区三-国产成人97精品免费看片-欧美黑人性猛视频-99久久免费观看少妇高潮 | 欧美日韩国产精品第一-91精品91九九九久久久-色婷婷亚洲五月天在线观看-成年av网站18禁 | 伊人久久久av老熟妇二区三区-日本国产欧美在线视频一区-国产又粗又黄又硬视频-久久久久精品一区二区三区不卡 | 91人妻精品久久久久久久久51-亚洲av日韩久久精品-日韩色图免费在线视频-久久一区二区中文字幕 | 天天日天天弄天天干b-有码中文字幕av-日韩aⅴ一区二区三区四区-日韩极品美女狠狠操 | 日韩四级大黄片-在线人妻少妇一区二区三区-久久99五月天综合伊人-91狠狠综合久久久 | 欧美日韩免费一区二区三区视频-在线观看91免费视频-狠狠人妻久久久久综合亚洲精品-日韩最新三级视频 | 丁香花五月婷婷开心-韩日视频中文字幕-欧美日韩高清国产精品-超碰人妻视频在线观看 | 国产精品麻豆综合在线-伊人久久久久中文字幕-国产精品久久久久久久久av大片-国产欧美日韩一级二级三级 | 2020中文字幕在线播放-日韩免费不卡av一区-岛国在线观看av在线观看-乱色熟女综合一区二 | 精品视频在线你懂的-97一区二区三区四区-亚洲中文字幕国产精品-欧美日韩中文制服人妻 | 日韩欧美p久久内射-日本人精品一区二区-69精品麻豆性色aⅴ人妻斩-久久久91精品国产极品美女 | 欧美日本韩国成人-乱色熟女综合一区二区-精品丰满美女人妻一区二区三区-精品在线观看视频在线观看 | 91福利美女视频-91久久精品免费视频-欧美人妻少妇一区二区三区-av影片在线观看午夜精品 | 欧美日韩淫淫淫淫淫淫-99免费视频这里有精彩-北条麻妃99精品青青久久-1024人妻精品一区二区三区 超碰人妻黑人中文版-18岁成年人黄色片-日韩在线一区第一页-91精品国产高清久久久久久久久 | 蜜桃婷婷狠狠久久综合9色-日韩中文字幕人妻一区二-日韩欧美老色头-精品国产999久久 | 国产99视频精品免视看7-www日韩欧美国产-日韩 欧美一区二区三区在线观看-日韩色美女免费视频 | 日韩av在线播放一区二区-亚洲亚洲成人三级电影-蜜臀精品一区二区三区在线观看-日韩三级四级片在线观看视频 | av成人中文字幕在线观看-久视频中文字幕免费在线精品-国产av系列一区二区-国产一区二区蜜臀大屁股 | 亚洲成熟毛多妇女av毛片-久久免费视频777-91麻豆网址在线观看-欧洲亚洲精品视频在线观看 | 欧美日韩人妻中文一区二区-国产又粗又硬又猛又大的视频-男人操女人逼逼文章-久久色资源中文字幕 综合久久高婷婷-日本一区久久久久久-日韩精品中文字幕人妻中出-日韩黄色蜜桃久久 |