Vue-router 前置守卫我拿你怎么办

注册了一个全局前置守卫beforeEach,在代码某一个地方需要这个重新定义这个前置守卫,结果进入路由的时候,两个前置守卫都依次调用了,怎么能覆盖掉之前定义的前置守卫呢? 看了官方文档也没找到合适的解决方法,哪位同仁能给与帮助,不生感激。

API 参考 | Vue Router (vuejs.org)

上面写了啊 beforeEach “返回一个删除已注册守卫的函数”

例如

type EachParameter = Parameters<typeof router.beforeEach>[0] //NavigationGuardWithThis
let removeBeforeEach:(() => void) | null = null
/** 替换前置守卫 */
export const replaceBeforeEach = (e:EachParameter | null) => {
  removeBeforeEach?.()
  removeBeforeEach = e ? router.beforeEach(e) : null
}

哈哈哈,我也不知道我长着眼睛干嘛的,还有个问题,就是这个返回的删除函数调用的问题,我项目没用ts,这个删除函数的传参我直接传了个function,调试进删除函数,发现他并没有正确删除对应的前置守卫

谢谢哈,已经解决了,灰常感谢

解决了就行,ts类型相关的东西去掉就是js了