- 例如商品列表页面前往商品详情页面,需要传一个商品id;
<router-link :to="{path: 'detail', query: {id: 1}}">前往detail页面</router-link>
- c页面的路径为http://localhost:8080/#/detail?id=1,可以看到传了一个参数id=1,并且就算刷新页面id也还会存在。
- 此时在c页面可以通过id来获取对应的详情数据,获取id的方式是this.$route.query.id
- query、params+动态路由传参。说下两者的区别:
// query通过path切换路由
<router-link :to="{path: 'Detail', query: { id: 1 }}">前往Detail页面</router-link>
// params通过name切换路由
<router-link :to="{name: 'Detail', params: { id: 1 }}">前往Detail页面</router-link>
- query通过
this.$route.query
来接收参数,params通过this.$route.params
来接收参数。
// query通过this.$route.query接收参数
created () {
const id = this.$route.query.id;
}
// params通过this.$route.params来接收参数
created () {
const id = this.$route.params.id;
}
- query传参的url展现方式:/detail?id=1&user=123&identity=1
- params+动态路由的url方式:/detail/123,params动态路由传参,一定要在路由中定义参数,然后在路由跳转的时候必须要加上参数,否则就是空白页面
- 注意,params传参时,如果没有在路由中定义参数,也是可以传过去的,同时也能接收到,但是一旦刷新页面,这个参数就不存在了。这对于需要依赖参数进行某些操作的行为是行不通的,因为你总不可能要求用户不能刷新页面吧
- 例如:
{
path: 'detail/:id',
name: 'Detail',
components: Detail
}
<router-link :to="{name: 'Detail', params: { id: 1, token: '123456' }}">前往Detail页面</router-link>
created () {
const id = this.$route.params.id;
const token = this.$route.params.token;
}