在vue项目中使用vue-router组件后,具有$router,$route两个对象
$router一般用来传递路由信息,路由跳转:this.$router.push()
$route一般用来获取路由信息,获取上个路由传参的数据:this.$route.params或this.$route.query
路由的几种方式
(1)声明式
//使用path传参
<router-link :to="{path: '/路径', query:{id: 'aaa'}}">子页面1</router-link>
//使用name传参
<router-link :to="{name: 'detail', params:{id: 'abc'}}">子页面1</router-link>
//:to="" 可以实现动态绑定的 路由 和 参数
(2)编程式
//query传参:
this.$router.push({path: '/路径',query:{id: 'aaa'}})
//params传参
this.$router.push({name: '组件名称',params:{id: 'aaa'}})
vue-router中query和params传参的区别
query传参相当于在地址栏上写入?ia=aaa,刷新页面数据不会消失,传参时数据也可以不写
params传参相当于在地址栏写上/aaa,此组件的路由path配置什么都没有的话用户刷新页面数据会丢失,位 使数据不丢失,path应该配置为/:id,使用占位符来保存数据
附上一篇详细介绍
转载来自https://blog.csdn.net/mf_717714/article/details/81945218
//$router : 是路由操作对象,只写对象
//$route : 路由信息对象,只读对象
//操作 路由跳转
this.$router.push({
name:'hello',
params:{
name:'word',
age:'11'
}
})
//读取 路由参数接收
this.name = this.$route.params.name;
this.age = this.$route.params.age;
1·query传递参数
我看了很多人都说query传参要用path来引入,params传参要用name来引入,只是我测试了一下,query使用name来引入也可以传参,使用path也可以。如果有人知道原因可以告诉我一下,谢谢!
//query传参,使用name跳转
this.$router.push({
name:'second',
query: {
queryId:'20180822',
queryName: 'query'
}
})
//query传参,使用path跳转
this.$router.push({
path:'second',
query: {
queryId:'20180822',
queryName: 'query'
}
})
//query传参接收
this.queryName = this.$route.query.queryName;
this.queryId = this.$route.query.queryId;
————————————————
版权声明:本文为CSDN博主「mf_717714」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mf_717714/article/details/81945218
2·params传递参数
注:使用params传参只能使用name进行引入
- 使用params传参
-
//params传参 使用name this.$router.push({ name:'second', params: { id:'20180822', name: 'query' } }) //params接收参数 this.id = this.$route.params.id ; this.name = this.$route.params.name ; //路由 { path: '/second/:id/:name', name: 'second', component: () => import('@/view/second') }需要注意的是:
params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也没关系。
params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。
如果路由后面没有 /:id/:name效果如下图,地址栏没有参数 ,刷新一下,页面失败 -
因此我们不可能让用户不要刷新,所以我们必须在路由后面加上 /:id/:name
- 如果使用path进行传参
-
//params传参 使用path this.$router.push({ path:'second', params: { id:'20180822', name: 'query' } }) //params接收参数 this.id = this.$route.params.id ; this.name = this.$route.params.name ; -
效果如下图
使用path传参什么效果都没有。
3.总结
传参可以使用params和query两种方式。
使用params传参只能用name来引入路由,即push里面只能是name:’xxxx’,不能是path:’/xxx’,因为params只能用name来引入路由,如果这里写成了path,接收参数页面会是undefined!!!。
使用query传参使用path来引入路由。
params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也没关系。
二者还有点区别,直白的来说query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数,而params相当于post请求,参数不会再地址栏中显示。
————————————————
版权声明:本文为CSDN博主「mf_717714」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mf_717714/article/details/81945218
本文详细解析了Vue项目中vue-router的使用,包括$router和$route对象的功能,以及通过query和params方式进行参数传递的区别和应用实例。阐述了两种传参方式的特点,如query的GET请求特性与params作为路由一部分的POST请求特性。
1万+

被折叠的 条评论
为什么被折叠?



