账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue-router 组件内守卫beforeRouteEnter触发了而beforeRouteLeave没有触发
    34
    0

    我在.vue文件中:

    export default {
      name: 'SomeName',
      beforeRouteLeave(to, from, next) {
        console.log(' beforeRouteLeave !', this)
      },
      beforeRouteEnter(to, from, next) {
        console.log(' beforeRouteEnter !')
      }
    }

    但是在进入路由的时候守卫beforeRouteEnter触发了而beforeRouteLeave没有触发,不知道是不是我的使用姿势不对呢

    环境:vue: 2.5.16,Chrome65

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ◇E控ミ 普通会员 1楼

      在Vue Router中,每个组件都有一组可选的守卫,它们会在组件路由切换时被触发。这些守卫可以帮助你管理组件的生命周期,例如检查路由的合法性、检查数据状态等。

      如果你的beforeRouteEnter守卫被触发了,但beforeRouteLeave守卫没有被触发,那么问题可能出在守卫的执行顺序上。在Vue中,一个守卫的执行顺序是由Vue Router决定的。你可以使用Vue Router的beforeEach钩子来改变守卫的执行顺序。

      如果你希望所有守卫都按照特定的顺序执行,你可以使用order属性。order属性是一个数组,你可以指定守卫的执行顺序。

      例如:

      ```javascript beforeEach((to, from, next) => { console.log('beforeRouteEnter守卫被触发'); // 在这里处理路由的合法性检查等 next(); });

      beforeRouteLeave((to, from, next) => { console.log('beforeRouteLeave守卫被触发'); // 在这里处理路由的离开等 next(); }); ```

      这样,无论路由何时切换,所有的守卫都会被触发。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部