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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于vue组件导航守卫 页面刷新问题
    58
    0
    beforeRouteEnter (to, from, next) {
            next(vm => {
                vm.subsysCode = from.meta.subsysCode || ''
            })
        },

    问题是这样的:目前发现刷新页面的话,from的路径是'/',但是我想要的效果是刷新页面,保存这个subsysCode不变。

    本人小白,只能想到的方案是使用session存起来,然后离开该页面时再清除session。然后觉得我自己遇到很多类似的问题都经常依赖session。
    因小弟知识面太浅,思路特别窄,顺便想借此机会拓展一下自己的知识面,有没有大神能提供一些别的方案,小弟在此万分感谢!

    4
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 幽恋£如歌々 普通会员 1楼

      Vue组件导航守卫的目的是防止用户通过刷新页面重新加载页面内容。然而,在某些情况下,当用户通过导航守卫时,页面刷新可能会发生。这可能是由于Vue框架的生命周期方法,如beforeDestroy和destroyed等方法触发的。

      例如,如果你有一个组件的导航守卫是使用Vue Router来实现的,当导航守卫被触发时,Vue Router会尝试更新组件的路由状态。如果在更新路由后,页面刷新发生了,那么用户的导航守卫就会被触发。

      要解决这个问题,你需要在导航守卫中阻止Vue Router的路由更新。你可以在beforeDestroy方法中执行此操作。这是一个简单的示例:

      javascript export default { beforeDestroy() { this.$router.$forceUpdate(); } }

      在这个例子中,我们在beforeDestroy方法中调用了$router.$forceUpdate(),这将立即更新路由状态。这将阻止Vue Router的路由更新,从而避免了页面刷新的问题。

      请注意,这种方法只在Vue Router在组件被销毁之前更新路由是有效的方法。如果你在组件被销毁后才尝试更新路由,那么用户将不会看到页面刷新的问题。在这种情况下,你需要使用其他方法来实现导航守卫,如使用setTimeout来等待页面重新加载完成。

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