vue单页面实现当前页面刷新或跳转时提示保存

本文介绍了如何在Vue项目中,利用组件路由钩子beforeRouteLeave和window.onbeforeunload监听刷新、跳转事件,以防止表单数据丢失。在beforeRouteLeave中进行提示,同时通过onbeforeunload处理浏览器刷新情况。虽然onbeforeunload的自定义提示语存在限制,但整体实现了页面保存提示功能。
摘要由CSDN通过智能技术生成

前言

最近公司vue项目中有一个需求,需要在当前页面刷新或跳转时提示保存并可取消刷新,以防止填写的表单内容丢失。刚开始思考觉得很简单,直接在Router的钩子中判断就好了,但是会发现还有新的问题存在,浏览器刷新和当前页面关闭的时候无法监听,最终用window.onbeforeunload成功解决,所以用这篇文章简单记录下整个解决过程。

vue-Router的钩子:

路由钩子可以分为全局的,单个路由独享的以及组件级别的,解决上述需求只用到了组件级别的路由钩子,所以本文只介绍组件级别的路由钩子,全局的和单个路由独享的路由钩子有需要的同学可以去vue-router官网查看介绍:

组件级别路由钩子分为三种:

  1. beforeRouteEnter:当成功获取并能进入路由(在渲染该组件的对应路由被 confirm 前)
  2. beforeRouteUpdate:在当前路由改变,但是该组件被复用时调用
  3. beforeRouteLeave:导航离开该组件的对应路由时调用

具体的介绍和写法如下:

const Foo = {
 template: `...`,
 beforeRouteEnter (to, from, next) {
 // 在渲染该组件的对应路由被 confirm 前调用
 // 不!能!获取组件实例 `this`
 // 因为当守卫执行前,组件实例还没被创建
 // 可以通过传一个回调给 next来
当使用Vue进行页面应用开发,如果在浏览器中直接刷新跳转到某个路由地址,可能会导致404错误的问题。这是因为页面应用的特性决定了它的路由是由前端控制的,而服务器端并没有相应的路由配置。所以当用户直接访问一个路由地址,服务器无法正确处理这个请求,就会返回404错误。 解决这个问题的方法有两种: 1. 使用服务器端的重定向配置:在服务器端的配置中,可以把所有的路由都重定向到主页面,这样当用户直接访问某个路由地址,服务器会将请求重定向到主页面,然后由前端的Vue路由来处理。这样就能避免404错误的出现。 2. 使用History模式:Vue提供了一种History模式的路由配置方式,通过这种方式可以使URL看起来更加正常,不再带有"#/"这样的标识符。但是使用History模式,需要在服务器端进行相应的配置,以确保用户直接访问某个路由地址能够正确返回对应的页面,而不是返回404错误。具体的配置方式可以参考Vue的官方文档或相关的教程。 综上所述,要解决Vue刷新页面跳转到404的问题,可以通过服务器端的重定向配置或使用Vue的History模式,并在服务器端进行相应的配置,以确保用户访问路由地址能够正确返回对应的页面,而不是返回404错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [关于Vue3刷新页面报错404的解决方法](https://blog.csdn.net/Yang_Ming_Lei/article/details/130384715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue页面实现当前页面刷新跳转提示保存](https://download.csdn.net/download/weixin_38749863/12950235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值