当前位置: 首页 > 知识库问答 >
问题:

vue3 - Vue3中的onBeforeEnter未触发原因?

蒯慈
2023-12-29

问一个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,ComponentPublicInstanceimport { defineComponent, ComponentPublicInstance } from "vue"const getSOME = () => {   //进行某种操作}defineExpose({ getSOME })</script>

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

解决问题

共有1个答案

杜晨朗
2023-12-29

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

 类似资料:
  • vue3.0+tsx中子组件注册的两个emit方法,点击事件btnclick在父组件中正常,然后一个接收消息的事件rollback,没触发。 子组件: 接收socket消息是正常的,msg也能正常打印,就是父组件无法接收事件 父组件: 父组件没触发rollback方法,有没有大神帮忙看下怎么回事

  • reactive 收集依赖不是要通过 Proxy 触发 get 吗,为什么这里只是打印 obj(没有触发 get),也能够收集到依赖?

  • vue3 新的 defineModel parent: <Input v-model:p_input="test_input" /> son: <el-input v-model="myInput" placeholder="Please input" /> 报警告: Extraneous non-emits event listeners (refresh) were passed to com

  • 可是官方最新的文档里还有这个指令的,文心靠不靠谱啊

  • VUE3-MUSIC 是一个基于 VUE3+TS 开发的音乐播放器,界面模仿 QQ 音乐 mac 客户端。 VUE3默认版本了,搞个项目熟悉一下,以备不时之需 在线体验:https://smallruraldog.github.io/vue3-music github:https://github.com/SmallRuralDog/vue3-music 将浏览器大小设置成1050*670,体验效

  • 项目需要,我需要在浏览器中调用摄像头,这时遇到一个问题,我用原化js写的程序没有任何的问题。用同一个浏览器读navigator下的mediaDevices,原生js就有mediaDevices,但vue3项目中却没有?有遇到过这问题的吗?