Vue3中的onBeforeEnter未触发原因?

问一个vue3 setup语法糖中使用onBeforeEnter的问题

<script lang="ts">
 //使用接口继承ComponentPublicInstance 增加getSOME(指定)方法
interface VmInstance extends ComponentPublicInstance {
    getSOME(): void
}
export default defineComponent({
    beforeRouteEnter(to, from, next) {
        next((vm) => {
            //将vm赋值 as 新的类型
            const instance = vm as VmInstance
            console.log(from)//获取form判断路由来源
            //调用指定的方法或者根据需要进行逻辑判断操作
            instance.getSOME()
        })
    }
})
// beforeRouteEnter
</script>
<script lang="ts" setup>
//引入defineComponent,ComponentPublicInstance
import { defineComponent, ComponentPublicInstance } from "vue"
const getSOME = () => {
   //进行某种操作
}

defineExpose({ getSOME })
</script>

这段代码是网上搜索的。但是在项目中没有进入beforeRouteEnter,不知道是什么问题。项目中这个路由是有keep-alive缓存的。或者大家有没有更好的方法,在vue3中监听到其他路由跳转到本组件

解决问题

阅读 1.8k
1 个回答

onBeforeRouteUpdate需要放在全局, 比如#app中, 放在一般组件发生路由时还没注册这个方法呢, 就不会监听到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题