现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据。
父组件中:
<li v-for="article in articles" @click="getDescribe(article.id)">
methods:
getDescribe(id) {// 直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/describe/${id}`, })
需要对应路由配置如下:
{ path: '/describe/:id', name: 'Describe', component: Describe }
很显然,需要在path中添加/:id来对应 $router.push 中path携带的参数。在子组件中可以使用来获取传递的参数值。
this.$route.params.id
第二种传参的方式
<router-link :to="{path:'/news', query:{id:1}}">news</router-link>
注意这里的传参使用的是path,则必须使用query这个关键字传入对应的参数
获取传递的参数$route.query.id
路由配置:
var routes=[ { path:'/news', component:news, name:'news', ]
第三种传参的方式
router-link :to="{name:'news', params:{id:1}}">news</router-link>
如果使用name指定跳转的路由(这里的name与路由中定义的name名字相同),则必须使用params这个关键字传入参数
获取传递的参数:$route.params.id
路由配置:
var routes=[ { path:'/news', component:news, name:'news', ]
query和params的区别
query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示
声明式导航和编程式导航
声明式 | 编程式 |
---|---|
<router-link :to="..."> | router.push(...) |
当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 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' }})
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接