一.简述
在实现页面跳转时,需要携带参数。在这里使用的是vue 中的路由Vue Router
,使用前先安装依赖配置项目环境,具体操作参考windos环境安装Vue及配置环境
二. $router
和$route
的区别
$router
: 是路由操作对象,只写对象
$route
: 路由信息对象,只读对象
//操作 路由跳转
this.$router.push({
name:'hello',
params:{
name:'word',
age:'11'
}
})
//读取 路由参数接收
this.name = this.$route.params.name;
this.age = this.$route.params.age;
三.route.params和$route.query的区别
- $route.params
类型: Object
一个 key/value 对象,包含了动态片段和全匹配片段,
如果没有路由参数,就是一个空对象。
- $route.query
类型: Object
一个 key/value 对象,表示 URL 查询参数。
例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。
四.params和query的使用
1.$route.params的使用
使用
params
传参只能使用name
进行引入
router/index.js路由的配置文件中需要写name
,否则获取不到信息会提示undefined
{
path: '/second/:id/:name',
name: 'second',
component: () => import('@/view/second')
}
传参组件:test1.vue
<template>
<el-button @click="lookRourt">查看测试</el-button>
</template>
<script>
export default {
data() {
return { }
},
methods: {
lookRourt() {
//params传参 使用name
this.$router.push({
name:'second',
params: {
id:'456578',
name: 'qwerty'
}
})
}
}
}
</script>
接收参数组件:second.vue
<script>
export default {
data() {
return {
queryName :'',
queryId :''
}
},
mounted: function() {
//params接收参数
this.id = this.$route.params.id ;
this.name = this.$route.params.name ;
},
methods: {
},
}
</script>
2.$route.query的使用
传参组件:test2.vue
<template>
<el-button @click="lookRourt">查看测试</el-button>
</template>
<script>
export default {
data() {
return { }
},
methods: {
lookRourt() {
//query传参,使用name跳转
this.$router.push({
name:'second',
query: {
queryId:'2121656',
queryName: 'wewew'
}
})
//query传参,使用path跳转
this.$router.push({
path:'second',
query: {
queryId:'454645',
queryName: 'qqweqwery'
}
})
}
}
}
</script>
接收参数组件:second.vue
<script>
export default {
data() {
return {
queryName :'',
queryId :''
}
},
mounted: function() {
//query传参接收
this.queryName = this.$route.query.queryName;
this.queryId = this.$route.query.queryId;
},
methods: {
},
}
</script>
不管是
path
引入还是name
引入效果都一样
注
1.
params
是路由的一部分,必须要在路由后面添加参数名。query
是拼接在url
后面的参数,没有也没关系
2.params
一旦设置在路由,params
就是路由的一部分,
如果这个路由有params
传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容
3.路由后面没有/:id/:name
,地址栏没有参数
4.query
相当于get
请求,页面跳转的时候,可以在地址栏看到请求参数,
而params
相当于post
请求,参数不会再地址栏中显示
网友评论