当前位置: 首页 > 知识库问答 >
问题:

vue.js - 求解:vue3项目onBeforeRouteLeave拦截不生效 页面路径依然回退?

羊舌墨一
2023-12-07

vue3项目 在组件内使用onBeforeRouteLeave进行页面拦截弹窗 已经进入判断 但是页面路径已经回退了 求解该如何让页面路径不回退

let leaveStatus = ref<number>(0);let show = ref<boolean>(false);onBeforeRouteLeave((to, from, next) => {  console.log('leaveStatus=', leaveStatus.value, leaveStatus.value++ )  // 模拟挽留  if (leaveStatus.value == 1 && sessionStorage.getItem('type') == 'back') {    show.value = true;    leaveStatus.value += 1;    next(false);  }else{    leaveStatus.value = 0;    show.value = false;    leaveStatus.value = 0;    next(true);  }});

尝试了不同的写法 依然不行

const beforeLeave = (to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext) => {  if (leaveStatus.value === 0 && sessionStorage.getItem('type') === 'back') {    console.log('触发')    show.value = true    leaveStatus.value += 1    next(false)  } else {    console.log('触发1')    show.value = false    leaveStatus.value = 0    next(true)  }}onBeforeRouteLeave(beforeLeave);

共有1个答案

米楚青
2023-12-07

next(false) 改为 return false 试试。

 类似资料:
  • 所以我有一个大型Java项目,我称之为ProjectA。我还有另一个项目,ProjectB,这是一个Maven项目,它包括ProjectA作为依赖项(通过将ProjectA编译为jar文件)。我还有许多其他Maven项目:ProjectC1、ProjectC2等。其中每一个都包括ProjectB作为Maven依赖项。 ProjectB包含所有ProjectC项目通用/可访问的代码,以及从Proje

  • 我正在使用IntelliJ开发Spark应用程序。我正在遵循这个关于如何使intellij与SBT项目良好地工作的指导。 但这样我就无法在IntelliJ内部运行应用程序,因为类路径中不会包含spark依赖项。

  • 在vue的项目中,前端请求后端的接口,数据返回了,状态是200,但是在axios的拦截器里走了error()的回调,这是为什么呢?! 返回的是一个文件流,盲猜是返回的文件的格式不对,不知道要咋改

  • 问题内容: 在我的系统中编辑页面时,用户可能会决定导航到另一个网站,这样做可能会丢失他们尚未保存的所有编辑。 我想拦截任何尝试转到另一个页面的尝试,并提示用户确保他们希望这样做,因为他们可能会丢失当前的工作。 Gmail的执行方式与此非常相似。例如,撰写一封新电子邮件,开始在邮件正文中键入内容,然后在地址栏中输入新位置(例如twitter.com等)。它将提示您“确定吗?” 想法如何复制这个?我的

  • 我有3个项目,ProjectB,ProjectC。 当我构建ProjectB时,它没有任何问题。但是当我试图构建ProjectA时,它在控制台上出现以下错误而失败。 评估项目“:ProjectB”时出现问题。在项目:ProjectB中找不到路径为:ProjectC的项目。 build.gradle-ProjectC settings.gradle-ProjectC build.gradle - 项

  • 一、拦截请求 mitmproxy的强大功能是拦截请求。拦截的请求将暂停,以便用户可以在将请求发送到服务器之前修改(或丢弃)该请求。mitmproxy的set intercept命令配置拦截。i默认情况下,该命令绑定到快捷方式。 通常不希望拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy希望将流过滤器表达式作为set intercept选择性拦截请求的第一个参数。在下面的教程中,我们