vue路由:hash模式下跳转404的问题。

4 篇文章 0 订阅
1 篇文章 0 订阅

vue的路由模式:hash和history。

最近有个问题,其实很常见就是hash模式跳转404。

发生问题的场景:

1.项目加载的动态路由。

2.首页和登录页在一个动态路由模块,而其他的管理层页面模块在另外一个动态路由模块。按需加载(就是根据传递的关键字动态加载不同的路由模块)。

3.问题的产生:登录后跳转home首页正常,点击跳转管理层页面(新打开浏览器窗口)。这时管理层页面编写<a></a>标签:<a href="/#/home">,跳转首页为404。

分析原因:

1.没有动态加载到home的动态路由,找不到路由,因此跳转404。

2.hash模式下页面不刷新,因此不会重新加载动态路由。

解决方案:

a标签href的跳转换成@click,跳转后强制刷新当前页面。

衍生问题:在点击浏览器自带的回退上一步的按钮时候又跳转到404了。

原因:hash模式跳转后会记录上次浏览器的访问记录。因此是404。

衍生问题的解决方案:

1.在需要监听处理回退上一步的页面定义返回方法:例:goBack(){};

2.在需要处理自定义返回的页面中添加监听事件 

onBeforeMount(() => {
    if (window.history && window.history.pushState) {
        // 向历史记录中插入返回上一步的页面
        history.pushState(null, null, location.href)
        window.addEventListener('popstate', goBack)
     }
})

3.使用后离开页面销毁:

onBeforeUnmount(() => {
  window.removeEventListener('popstate', goBack)
})

部分引博客Vue监听并自定义浏览器返回事件方案_vue改变浏览器的回退事件-CSDN博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值