refactor: 优化路由监听器,使其支持移除单个回调函数
This commit is contained in:
parent
5113d60565
commit
41973c2013
@ -148,10 +148,6 @@ const closeMenu = () => {
|
|||||||
visible.value = false
|
visible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
listenerRouteChange((route) => {
|
|
||||||
addTags(route)
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(visible, (value) => {
|
watch(visible, (value) => {
|
||||||
value ? document.body.addEventListener("click", closeMenu) : document.body.removeEventListener("click", closeMenu)
|
value ? document.body.addEventListener("click", closeMenu) : document.body.removeEventListener("click", closeMenu)
|
||||||
})
|
})
|
||||||
@ -161,9 +157,17 @@ onMounted(() => {
|
|||||||
addTags(route)
|
addTags(route)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
//#region 监听路由
|
||||||
|
const callback = (route: RouteLocationNormalizedLoaded) => {
|
||||||
|
addTags(route)
|
||||||
|
}
|
||||||
|
|
||||||
|
listenerRouteChange(callback)
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
removeRouteListener()
|
removeRouteListener(callback)
|
||||||
})
|
})
|
||||||
|
//#endregion
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -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)
|
emitter.off(key)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user