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

前端 - vue-router 当前页面如何判断是通过replace还是push进入的呢?

丌官炎彬
2023-08-30

需求背景

  1. A B C 三个页面
  2. A => C ,通过 router.push 进入。
  3. B => C ,通过 router.repace 进入。

需求:
在 C 页面需要判断是 replace 还是 push 来进行特殊的操作。

问题: vue-router 是否有这样的方式呢?

共有1个答案

蒋奕
2023-08-30

Vue Router本身没有直接提供判断当前页面是通过router.push还是router.replace进入的方法。
但可以通过一些变通的方式来实现类似的功能。

一种方法是在切换页面时,传递一个自定义的参数来标识是通过router.push还是router.replace进入的。下面是一个示例:

在触发页面切换时,传递一个自定义参数:

// 在页面 A 中this.$router.push({ path: '/C', query: { method: 'push' } });// 在页面 B 中this.$router.replace({ path: '/C', query: { method: 'replace' } });

在页面 C 中,通过this.$route.query.method来获取传递的参数,从而判断是通过push还是replace进入的:

export default {  mounted() {    const method = this.$route.query.method;    if (method === 'push') {      // 通过 push 进入的特殊操作    } else if (method === 'replace') {      // 通过 replace 进入的特殊操作    }  }}

虽然这种方法并不是直接判断当前页面是通过router.push还是router.replace进入的,但通过传递参数的方式,可以达到类似的效果。

 类似资料:
  • 问题内容: 我有一个页面可以通过Ajax加载其他页面(请考虑使用框架,除非没有框架)。 显然,这些页面都可以独立调用,因此我想检测是否通过Ajax调用了它们,如果不是,则重定向到主Ajax页面。 这些页面是php页面,因此我也可以访问它。 指数: 问题答案: 使用该对象进行请求时,现代浏览器会添加以下请求标头: 在PHP中,使用以下命令检查此标头的存在:

  • 前端如何判断用户的 mac 是 arm 还是 x86 https://www.telerik.com/download/fiddler-everywhere 下载 fiddler-everywhere 的时候,它监测到了我的电脑是 arm 怎么实现的?浏览器的 UA 都还是谎称自己是 intel 是通过 js 调用浏览器 API 获得的结果吗?对应的 API 是哪个呢?

  • 本文向大家介绍怎样判断jQuery当前元素是隐藏还是显示,包括了怎样判断jQuery当前元素是隐藏还是显示的使用技巧和注意事项,需要的朋友参考一下 $(this).is(":hidden");  //如果元素是隐藏的话,则返回true is挺好用的,他能够用jQuery选择器作为参数,特别是跟jQuery里面的选择器里面那些以冒号开头的筛选符配合使用,实现各种各样的判断。如: ":checked,

  • 功能点是点击搜索id后,input框清空,再次输入相同的值就提示已有相同的值 代码如下: 期望如果重复的id 就提示 相同的id,也就不调接口了

  • 本文向大家介绍如何判断是函数还是方法?相关面试题,主要包含被问及如何判断是函数还是方法?时的应答技巧和注意事项,需要的朋友参考一下 看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数, 如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法 print(isinstance(obj.func, FunctionType)) # False print(isi

  • 本文向大家介绍javascript判断网页是关闭还是刷新,包括了javascript判断网页是关闭还是刷新的使用技巧和注意事项,需要的朋友参考一下 原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序  代码如下  用浏览器右上角的关闭按钮时好用,但在选项卡上关闭和在任务栏上关闭,这个方法就不作用了 js标签只有onlo