【Vue3实战】:用导航守卫拦截未保存的编辑,提升用户体验

前言

在Vue3应用中,用户可能会在一个页面上进行数据编辑,如填写表单或修改表格中的数据。当用户在未保存更改的情况下尝试离开当前页面时,我们希望能够弹出提示框,告知用户有未保存的更改,并询问是否确定离开。

一、使用 onBeforeRouteLeave 导航守卫

1. 安装Vue Router

首先,确保你的项目中已经安装了Vue Router。如果还没有安装,可以使用以下命令进行安装:

bash 复制代码
npm install vue-router@next

2. 设置路由和组件

假设我们编辑数据页面。在这个组件中,我们需要定义onBeforeRouteLeave导航守卫。

TypeScript 复制代码
<script>
import {defineComponent} from 'vue';
import {onBeforeRouteLeave} from "vue-router";

export default defineComponent({
  setup() {

    // 导航守卫
    onBeforeRouteLeave((to, from, next) => {
      // 换成各自UI对话框组件
      const reply = window.confirm('确定离开当前页面?');
      if (reply) {
        next(); // 用户确认离开,继续导航
      } else {
        next(false); // 用户取消离开,阻止导航
      }
    });


    return {
      //...
    }
  }
})
</script>

二、效果验证

现在,当你修改表单中的数据并尝试离开页面时,会弹出一个确认对话框,提示你有未保存的更改。

总结

通过利用Vue Router的onBeforeRouteLeave导航守卫,我们可以有效地防止用户在未保存更改的情况下误点离开页面。这种方法不仅简单实用,而且能够显著提升用户体验。在实际开发中,你还可以根据具体需求对导航守卫进行更多的自定义和扩展。

希望本文能够帮助你解决Vue3应用中的编辑误点忘记保存的问题。如果你有任何疑问或建议,请随时在评论区留言。

相关推荐
F1FJJ19 分钟前
Shield CLI:MySQL 插件 vs phpMyAdmin:轻量 Web 数据库管理工具对比
前端·网络·数据库·网络协议·mysql·容器
李明卫杭州34 分钟前
JavaScript 严格模式下 arguments 的区别
前端·javascript
swipe37 分钟前
向量数据库实战:为什么 AI Agent 离不开 Milvus
前端·面试·agent
小锋学长生活大爆炸1 小时前
【教程】Edge浏览器中可以提升性能的flags
前端·edge
苍舒墨1 小时前
如何借助Github pages部署React+vite静态前端项目
前端
曹牧1 小时前
JSON 数组的正确使用方式
java·服务器·前端
小村儿1 小时前
一起吃透 Claude Code,告别 AI 编程迷茫
前端·后端·ai编程
小金鱼Y2 小时前
🔥 前端人必看:浏览器安全核心知识点全解析(XSS/CSRF/DDoS)
前端·javascript·安全
时寒的笔记2 小时前
js逆向05_ob混淆花指令,平坦流,某麦网(突破ob混淆寻找拦截器)
开发语言·前端·javascript
ZengLiangYi2 小时前
从文章到脚本:把 Git Tag + Semver + CI/CD 收敛成一个 `release.mjs`
前端·github