问一个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中监听到其他路由跳转到本组件
解决问题
onBeforeRouteUpdate
需要放在全局, 比如#app
中, 放在一般组件发生路由时还没注册这个方法呢, 就不会监听到