js-Vue Router 中的方法,父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转解决

这篇具有很好参考价值的文章主要介绍了js-Vue Router 中的方法,父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.常用的方法

        在 Vue Router 中,有一些常用的方法用于实现路由导航和管理。以下是一些常见的 Vue Router 方法及其作用:

  1. pushrouter.push(location, onComplete, onAbort)

    • 作用:向路由历史记录中添加一个新条目,并导航到指定的路由。
    • 示例:this.$router.push('/new-route')
  2. replacerouter.replace(location, onComplete, onAbort)

    • 作用:替换当前路由为指定的路由,不会在历史记录中留下新条目。
    • 示例:this.$router.replace('/new-route')
  3. gorouter.go(n)

    • 作用:前进或后退指定步数的历史记录条目。
    • 示例:this.$router.go(-1) // 后退一页
  4. backrouter.back()

    • 作用:后退一页,相当于 go(-1)
    • 示例:this.$router.back()
  5. forwardrouter.forward()

    • 作用:前进一页,相当于 go(1)
    • 示例:this.$router.forward()
  6. resolverouter.resolve(location, current, append)

    • 作用:解析给定的位置(location)到一个完整的地址对象。
    • 示例:this.$router.resolve('/about')

这些方法可以通过 this.$router 对象来访问,通常在 Vue 组件中使用。它们提供了对路由器的操作和导航功能,可以帮助您实现页面间的切换、历史记录管理等功能。

2.问题描述

        父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转。

js-Vue Router 中的方法,父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转解决,js,vue.js,javascript,前端

BC中形成死循环,由于跳转记录了来时的路径一旦由a->b :返回记录路径为toA ,b->c:返回路径为toB,从c返回到b后 返回路径为toC。形成B与C死循环。

所以关键为:在B中时记录唯一由其他页面跳转到B的路径在存入返回路径时进行判断排除从C返回到B路径。在C返回到B时使用  this.$router.replace({path}),replace替换当前路由为指定的路由,不会在历史记录中留下新条目。

(1)A跳转到B

 toB(row) {
                let path = 'home/B'
                this.$router.push({
                    path,
                })
            },

  (2)   B返回A

 BackA() {
		  let path = this.fromPath;
		  this.$router.replace({path})
	  },
beforeRouteEnter(to, from, next) {
		next(vm => {
			// 表示非C返回
			if (to?.query?.proInfo && 0 < from.fullPath.length&&from.path==from.fullPath) {
			// 传入参数'proInfo'表示项目入口进入
			vm.fromPath = from.fullPath
			// setItem()方法存储 存储
			sessionStorage.setItem("viewProjectFromPathSession", from.fullPath);
			}
			else if(from.path){

			}
			else{
			// sessionStorage.getItem 读取 
			vm.fromPath = sessionStorage.getItem("viewProjectFromPathSession");
			}
		})
	},
 init(){
		if (this.processFromPath) {
		this.fromPath = this.processFromPath;
	  }
activated() {
	  this.init()
	},

在B中路由守卫,缓存记录路由跳转路径

  (3)  B跳转到C

        进行携带参数标识index

      toC(row) {
                let path = 'home/C'
                this.$router.push({
                    path,
                    query: { proInfo: row,index:2},
                })
            },

 (4)C返回B

 // C-B
	  BackB() {
		let path = this.fromPath;
        this.$router.replace({path})
	  },
	  beforeRouteEnter(to, from, next) {
		  next(vm => {
			  if (to?.query?.proInfo && 0 < from.fullPath.length) {
				// 传入参数'proInfo'表示项目入口进入
				vm.fromPath = from.fullPath
				sessionStorage.setItem("viewProjectFromPathSession", from.fullPath);
			  }else{
				vm.fromPath = sessionStorage.getItem("viewProjectFromPathSession");
			  }
		  })
	  },
 init(){
		if (this.processFromPath) {
		this.fromPath = this.processFromPath;
	  }
activated() {
	  this.init()
	},

在C中路由守卫,缓存记录路由跳转路径文章来源地址https://www.toymoban.com/news/detail-835107.html

到了这里,关于js-Vue Router 中的方法,父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3框架Vite + vue Router + ts 登录后返回上一页或首页

    项目(Vue3):Vite + vue Router + ts 登录后跳转情况: ① 项目中有些页面是需要登录后才可以访问的,如果没有登录的情况下,访问该页面会自动跳转到登录页,完成登录操作后,需要再次返回到该页面 ② 如果直接访问登录页,登录后跳转到首页 访问页面时,进行限制,除了部分

    2024年02月04日
    浏览(47)
  • Win11无法连接共享打印机错误代码0x00000bc4解决方法

    共享打印机连接错误是很多用户头疼的事情,比如最近就有win11用户遇到打印机错误0x00000bc4的问题,这该怎么修复?下面就来看看小编带来的解决办法吧,才升级win11的用户可以注意下,如果遇到就能自己动手解决了。 Win11连接共享打印机错误0x00000bc4解决方法 1、打开本地组

    2024年02月11日
    浏览(57)
  • vue 导入js中的方法

    目录 1 方法一:使用 标签 2 方法二:使用 import 语句 3 举例 3.1 js文件 3.2 vue 导入js文件 4 举例 4.1 js文件 4.2 vue 导入js文件 --XXX 是一个自定义的变量名 5 修改文件后一定要保存 在运行

    2024年02月12日
    浏览(34)
  • Vue中router-view无法显示

    如果你存在: 代码没报错,运行成功,但是index.js中router挂接的内容无法显示, 没有犯书写错误,routes 和 component 没有写错, 在浏览器中检查,App.vue中对应的 router-view为空 那么建议你接着看,首先, 正确的结果: 以上,没什么问题的话,可以看到  App.vue中对应的 router-

    2024年02月11日
    浏览(34)
  • Vue 2和Vue 3路由Router创建的区别简记(在main.js文件中引入的区别和router的js文件中创建语法的区别)

    1、版本的搭配: Vue 2到Vue 3的改版升级,同样的带来Vue Router的升级。创建Vue项目之后,我们可以在package.json文件中看到,Vue 2创建的项目往往是与Vue Router 3.X版本搭配的,而Vue 3创建的项目与Vue Router 4.X版本搭配。 Vue 3搭配Vue Router 4.X版本: Vue 2搭配Vue Router3.X版本: 2、在main

    2024年02月08日
    浏览(60)
  • Vue.js 中的 $emit 和 $on 方法有什么区别?

    在 Vue.js 中,$emit 和 $on 方法是两个常用的方法,用于实现组件间的通信。它们可以让我们在一个组件中触发一个自定义事件,并在另一个组件中监听这个事件,从而实现组件间的数据传递和交互。虽然它们的名字很相似,但它们的作用和用法有所不同。本文将介绍 $emit 和

    2024年02月08日
    浏览(38)
  • Vue.js:Vue-Router动态路由从服务器接口获取路由数据

    文档 https://v3.router.vuejs.org/zh/installation.html 版本号 有几种方式实现动态路由: 前端配置 完整路由 ,通过接口返回的数据判断是否可显示,是否可访问 前端配置 部分路由 ,由后端接口返回的数据生成新路由 抛开路由的思维,是否能直接通过 url查询参数 或者是 动态路径参数

    2024年02月08日
    浏览(56)
  • React和Vue 中的 router 实现原理如何

    React 和 Vue 中的路由器(Router)实现原理类似,都是基于监听 URL 变化,然后根据不同的 URL 加载相应的组件或页面。下面是它们的一般实现原理: React Router 实现原理: History API:  React Router 使用 HTML5 History API(pushState() 和 replaceState() 方法)来操作浏览器的历史记录,从而

    2024年02月20日
    浏览(49)
  • vue-router中的一些 API

    在Vue.js的vue-router中,一些重要api 1、RouterHistory:这是 vue-router 提供的路由历史记录对象。它可以跟踪当前页面的路由历史,并提供一些方法和属性来管理导航和历史记录。在 vue-router 中,有两种类型的路由历史记录对象: createWebHistory createWebHashHistory。 2、RouteRecordRaw:这是一

    2024年02月12日
    浏览(16)
  • Vue-router中的Hash模式与History模式

    在Vue Router中,Hash模式是一种URL的哈希模式,也被称为锚点模式。在Hash模式下,URL中的哈希部分(即#号后面的内容)会被用作路由的标识符,而不会触发浏览器向服务器发送请求。 Hash模式的URL示例: http://example.com/#/home 在Hash模式下,Vue Router会监听URL中哈希部分的变化,并

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包