Vue 路由传值的几种方法

Vue 路由传值的几种方法,第1张

方案一:

getDescribe(id) {//   直接调用$routerpush 实现携带参数的跳转
this$routerpush({
path: `/describe/${id}`,
})

方案一,需要对应路由配置如下:

{     path: '/describe/:id',
name: 'Describe',
component: Describe
}

很显然,需要在path中添加/:id来对应 $routerpush 中path携带的参数。在子组件中可以使用来获取传递的参数值。

this$routeparamsid

方案二:

父组件中:通过路由属性中的name来确定匹配的路由,通过params来传递参数。

this$routerpush({          name: 'Describe',          params: {            id: id
}
})

对应路由配置: 注意这里不能使用:/id来传递参数了,因为父组件中,已经使用params来携带参数了。

{     path: '/describe',
name: 'Describe',
component: Describe
}

子组件中: 这样来获取参数

this$routeparamsid

方案三:

父组件:使用path来匹配路由,然后通过query来传递参数
这种情况下 query传递的参数会显示在url后面id=?

this$routerpush({          path: '/describe',          query: {            id: id
}
})

对应路由配置:

{     path: '/describe',
name: 'Describe',
component: Describe
}

对应子组件: 这样来获取参数

this$routequeryid
这里要特别注意 在子组件中 获取参数的时候是$routeparams 而不是
$router 这很重要~~~

replace和push区别:

routerpush(location) 会向 history 栈添加一个新的记录,当用户点击浏览器后退按钮时,则回到之前的 URL。

routerreplace(location) ,replace 属性(默认值: false),它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

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

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

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

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

两者都可以传递参数,区别是什么?

query 传参配置的是path,而params传参配置的是name,在params中配置path无效

query在路由配置不需要设置参数,而params必须设置

query传递的参数会显示在地址栏中

params传参刷新会无效,但是query会保存传递过来的值,刷新不变

一、this$routequery的使用

1、router/indexjs

2、传参数

3、获取参数

this$routequeryshopid

4、url的表现形式(url中带有参数)

二、this$routeparams

1、router/indexjs

2、传参数( params相对应的是name query相对应的是path)

3、获取参数

4、url的表现形式(url中没带参数)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12969705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存