首页 > 其他分享 >vue3项目在页面退出时弹窗确认--用vant组件Dialog弹窗在路由改变的时候不生效问题

vue3项目在页面退出时弹窗确认--用vant组件Dialog弹窗在路由改变的时候不生效问题

时间:2022-09-02 16:34:40浏览次数:57  
标签:topicInfo false vant -- formRouteAbi 测试 null 弹窗

写vue3的H5项目的时候有个需求是回退时弹窗确认是否退出当前页面

一、第一个办法------使用onbeforeRouteLeave路由钩子

 const formRouteAbi = localStorage.getItem("formRouteAbi"); //获取上一页路径
    onBeforeRouteLeave((to, from, next) => {
      if (formRouteAbi == to.fullPath && topicInfo.topicNow > 0) {
      
        Dialog.confirm({
            closeOnPopstate: false,//不加这个弹窗不会展示的,因为路由发生了变化
          message: `你确定要退出社交能力测试吗,再测试${
            topicInfo.topicNum - topicInfo.topicNow
          }个题就完成该能力测试了。`,
          confirmButtonText: "继续测试",
          cancelButtonText: "确认退出",
        })
          .then(() => {
            next(false);
          })
          .catch(() => {
            next(true);
          });
      } else {
        next(true);
      }
    });

二、第二个办法------使用history.pushState(null, "null", document.URL);禁用前进后退功能

禁用回退功能,手动添加跳转事件

onMounted(() => {
      history.pushState(null, "null", document.URL);
      window.addEventListener("popstate", handleEvent, false);
    });
    onUnmounted(() => {
      window.removeEventListener("popstate", handleEvent, false);
    });
    const url =
      process.env.NODE_ENV == "production"
        ? location.origin + "/shengchan"
        : location.origin;
    const handleEvent = () => {
      history.pushState(null, "null", document.URL);
      if (topicInfo.topicNow > 0) {
        Dialog.confirm({
        closeOnPopstate: false,
        message: `你确定要退出社交能力测试吗,再测试${
          topicInfo.topicNum - topicInfo.topicNow
        }个题就完成该能力测试了。`,
        confirmButtonText: "继续测试",
        cancelButtonText: "确认退出",
      })
        .then(() => {})
        .catch(() => {
          location.href = `${url}${formRouteAbi}`;
        });
      } else {
        location.href = `${url}${formRouteAbi}`;
      }
    };
两种方法,都可以实现

标签:topicInfo,false,vant,--,formRouteAbi,测试,null,弹窗
From: https://www.cnblogs.com/whqbk/p/16650413.html

相关文章

  • 七(一)、activemq queue整合spring
    一、前言spring代码基于SSM整合(spring-springmvc-mybatis)之CRUD ;代码地址:(基础班:https://gitee.com/joy521125/ssm-senior-base.gitmaven版:https://gitee.com/joy5211......
  • springboot启动报错
    springboot启动报错Description:FieldstationInformationServiceincom.htkj.aicheck.service.TrainCheckServicerequiredabeanoftype'com.htkj.ai.server.service......
  • 如何用苹果app完成ipa安装
    ​当打包完ipa文件后,ipa文件无法直接安装,只能添加udid安装到手机,或者上架才能安装,这里,我分享下使用本站工具上传ipa到appstore,无需mac电脑完成ipa文件上架的详细步骤:1、......
  • python采集财经数据信息并作可视化~
    前言......
  • 记一次给win10客户电脑上装上tomcat程序后,启动出问题的情况
    情景描述本来是给一个客户安装我们公司的bs程序,以前也给其他公司安装过,问题都不大,这次客户因为在国外,使用向日葵进行远程操作,网络极度不稳地,超级卡,过程相当崩溃。不论是数......
  • 【校招VIP】[产品][211][5分]项目缺少产品逻辑
    关注【校招VIP】公众号,回复【简历】,添加校招顾问,即可获取简历指导!本份简历是一位21届211产品同学的简历,简历评分5分。一、学员简历二、指导意见这份简历的版式没有问题......
  • 25.强调句
    一、强调句的常用句型(一)陈述句的强调句型Itis/was+被强调部分(通常是主语、宾语或状语)+that/who(当强调主语且主语指人)+其他部分。例:Itwasyesterdaythatheme......
  • 一览—教程2020《软件开发领域》ios证书
       xcode包装IPA包之前先申请iOS证书,然后进口证书以便包装出口IPA包。分为5步进行1、下载Appuploader申请iOS证书2、将证书输入到密钥列。3、Xcode配置iOS证书4......
  • 类似Coding的研发管理工具有哪些?
    这篇文章我们将介绍软件研发管理平台Coding的功能、价格,以及优劣势分析,国内外同类型的IT管理工具盘点。一、研发管理工具Coding简介深圳市腾云扣钉科技有限公司(CODIN......
  • Mybatis中的数据库连接池
    mybatis中的数据库连接池目录mybatis中的数据库连接池一、前言二、为什么要使用数据库连接池1、创建一个java.sql.Connection实例对象的代价2、问题分析3、解决方案三、My......