From 41973c201358ee201ebf03838068463a745189d4 Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Fri, 25 Aug 2023 19:01:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E7=9B=91=E5=90=AC=E5=99=A8=EF=BC=8C=E4=BD=BF=E5=85=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=A7=BB=E9=99=A4=E5=8D=95=E4=B8=AA=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layouts/components/TagsView/index.vue | 14 +++++++++----- src/utils/route-listener.ts | 7 ++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/layouts/components/TagsView/index.vue b/src/layouts/components/TagsView/index.vue index 8201e0d..65b0dce 100644 --- a/src/layouts/components/TagsView/index.vue +++ b/src/layouts/components/TagsView/index.vue @@ -148,10 +148,6 @@ const closeMenu = () => { visible.value = false } -listenerRouteChange((route) => { - addTags(route) -}) - watch(visible, (value) => { value ? document.body.addEventListener("click", closeMenu) : document.body.removeEventListener("click", closeMenu) }) @@ -161,9 +157,17 @@ onMounted(() => { addTags(route) }) +//#region 监听路由 +const callback = (route: RouteLocationNormalizedLoaded) => { + addTags(route) +} + +listenerRouteChange(callback) + onBeforeUnmount(() => { - removeRouteListener() + removeRouteListener(callback) }) +//#endregion </script> <template> diff --git a/src/utils/route-listener.ts b/src/utils/route-listener.ts index f8e82ea..d753b61 100644 --- a/src/utils/route-listener.ts +++ b/src/utils/route-listener.ts @@ -23,6 +23,11 @@ export const listenerRouteChange = (callback: Callback, immediate = false) => { } /** 移除路由变化事件监听器 */ -export const removeRouteListener = () => { +export const removeRouteListener = (callback: Callback) => { + emitter.off(key, callback as Handler) +} + +/** 移除所有路由变化事件监听器 */ +export const removeAllRouteListener = () => { emitter.off(key) }