vue拦截路由回退弹窗

一,拦截路由回退弹层功能出现的原因:为了增加用户体验

在移动端用户容易误操作回退按键或者左滑,导致页面回退,

特别是大表单页面填写未提交时,

如果出现了这种误操作会导致浪费用户大量精力和时间。

二,由产品提出要求,回退时是否可以增加弹窗拦截

我在网上找了一下,文案极少。

思路就是在页面组件生命周期钩子 beforeRouteLeave 时进行拦截,确定后改变inter。

三,结合Vue.mixin增加代码通用性

在main.js中加入如下代码

// 设置路由拦截器
Vue.mixin({
  beforeRouteLeave(to, from, next) {
    if(this.interceptRouter){
      next((()=>{
        MessageBox.confirm('你可能有修改未提交,确定返回上级页面?').then(()=>{
          this.interceptRouter = false;
          this.$router.go(-1)
        }).catch(()=>{
          
        })
        return false;
      })())
    }else{
      next()
    }
  }
})

然后在需要回退拦截的页面data中加入interceptRouter在合适的时机(比如表单发生改变时)将值改为true

之后用户如果回退,就会弹出提示,点确定后会将interceptRouter 改为false,并再次执行go(-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值