当前位置:家常菜>百科>科技>正文

vue路由跳转

人气:261 ℃/2024-09-18 22:55:17

vue路由跳转的方法是什么呢?不知道的小伙伴来看看小编今天的分享吧!

方法一:router-link (声明式路由)

1、不带参数

<router-link :to="{name:'home'}"> 

<router-link :to="{path:'/home'}"> //name,path都行, 建议用name  

// 注意:router-link中链接如果是'/'开始就是从根路由开始,如果开始不带'/',则从当前路由开始。

2、带参数

<router-link :to="{name:'home', params: {id:1}}">  

// params传参数 (类似post)

// 路由配置 path: "/home/:id" 或者 path: "/home:id" 

// 不配置path ,第一次可请求,刷新页面id会消失

// 配置path,刷新页面id会保留

// html 取参  $route.params.id

// script 取参  this.$route.params.id

<router-link :to="{name:'home', query: {id:1}}"> 

方法二:router.push(编程式路由)

// 字符串

router.push('home')

// 对象

router.push({ path: 'home' })

// 命名的路由

router.push({ name: 'user', params: { userId: '123' }})

// 带查询参数,变成 /register?plan=private

router.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path:

const userId = '123'

router.push({ name: 'user', params: { userId }}) // -> /user/123

router.push({ path: `/user/${userId}` }) // -> /user/123

// 这里的 params 不生效

router.push({ path: '/user', params: { userId }}) // -> /user

方法三:this.$router.push() (函数里面调用)

1、不带参数

this.$router.push('/home')

this.$router.push({name:'home'})

this.$router.push({path:'/home'})

2、query传参 

this.$router.push({name:'home',query: {id:'1'}})

this.$router.push({path:'/home',query: {id:'1'}})

// html 取参  $route.query.id

// script 取参  this.$route.query.id

3、params传参

this.$router.push({name:'home',params: {id:'1'}})  // 只能用 name

// 路由配置 path: "/home/:id" 或者 path: "/home:id" ,

// 不配置path ,第一次可请求,刷新页面id会消失

// 配置path,刷新页面id会保留

// html 取参  $route.params.id

// script 取参  this.$route.params.id

4、query和params区别

query类似 get, 跳转之后页面 url后面会拼接参数,类似?id=1, 非重要性的可以这样传, 密码之类还是用params刷新页面id还在

params类似 post, 跳转之后页面 url后面不会拼接参数 , 但是刷新页面id会消失

方法四:this.$router.replace() (用法同上,push)

方法五:this.$router.go(n) ()

this.$router.go(n)

向前或者向后跳转n个页面,n可为正整数或负整数

ps : 区别

this.$router.push

跳转到指定url路径,并想history栈中添加一个记录,点击后退会返回到上一个页面

this.$router.replace

跳转到指定url路径,但是history栈中不会有记录,点击返回会跳转到上上个页面 (就是直接替换了当前页面)

this.$router.go(n)

向前或者向后跳转n个页面,n可为正整数或负整数

注意:

获取路由上面的参数,用的是$route,后面没有r

params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。

params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失,

  • 购买新车的时候保险需要多少钱呢?

    在买保险的时候,最低标准就是买的交强险,一年的价格大约在800块左右,交强险是一种强制性的保险,也就是说你必须要买的,商业险里面也有很多的类别。商业险里边包括了第三者责任险,车...

    问答查看全文>>
  • model32020款与2021款四万区别是什么?

    model32020款与2021款四万区别是:1、百公里加速时间不同:model32020款百公里加速时间为5.3秒;2021款百公里加速时间为5.6秒。2、车重不同:mode...

    问答查看全文>>
  • 汽车上a/c是啥含义

    a/c是空调压缩机开关,也就是制冷开关。假如车在烈日下停放时间较长,汽车起动后不用及时开启a/c制冷,应先把所有车窗基本都打开,把热气排出去,等车厢内溫度降低后,进而关闭车窗,...

    问答查看全文>>
  • 2019年本田冠道落地多少钱?

    2019年本田冠道落地需要:1、2019款本田冠道采用了本田家族式前脸,粗壮的飞翼式镀铬饰条贯穿中网,凌厉的大灯与雾灯均加入了LED元素。车身侧面充满雕塑感,溜背式设计,使整车...

    问答查看全文>>
  • 英文朋友圈句子

    1、你不知道,你就是我的梦想,我是为了你才这么努力的。2、To keep silent about the past is to experience both good an...

    句子查看全文>>
本网站部分内容、图文来自于网络,如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2007-2024 家常菜 All Rights Reserved. 手机版