vue3 script setup 使用导航守卫,离开页面前提示数据未保存

vue3使用导航守卫


前言

vue3 使用 < script setup >语法糖,页面数据已编辑未保存时,离开当前页面前添加导航守卫,弹窗提示数据未保存。


一、相关文档

在这里插入图片描述
导航守卫 Vue Router

<script lang="ts" setup>
// 在setup中只有这两个钩子
import { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router'
onBeforeRouteLeave(() => {
	// 
})
onBeforeRouteUpdate(() => {
	//
})
</script>

二、使用示例

代码如下:

// watch监听数据变化
watch(state.info.orderInfo, (newVal, oldVal) => {

// 数据变化时标记flag为true;数据保存时标记flag为false
     editFlag.value = true
    console.log(newVal, oldVal)
})

// 监听跳转,添加路由守卫拦截
onBeforeRouteLeave((to, from, next) => {
    if(editFlag.value){
        ElMessageBox.confirm(
        '当前页面修改数据为保存,确定离开吗?',
        '温馨提示',
        {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
        }
    )
        .then(() => {		
            // 点击确定,忽略修改,继续跳转
            next()
        })
        .catch(() => {
            // 点击取消,拦截跳转,停留在当前页面
        next(false)
        })
    }
})
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值