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)
 }