请说明在 Vue3 中如何进行路由传参(包括query参数和params参数)。
时间: 2024-10-28 18:11:22 浏览: 14
vue router使用query和params传参的使用和区别
在 Vue3 中,路由传参主要有两种方式:query参数和params参数。
1. **Query 参数** (通常用于查询字符串):
- **动态路由匹配**: 使用冒号 `:` 包裹变量名,例如 `/users/:userId`。当跳转时,可以在 URL 后面添加 `?userId=123`,其中 `userId` 就会被解析为参数值。
- **设置和获取**: 使用 `this.$route.query` 对象。创建一个组件时,可以在路由配置里直接设置,如 `router.push({ name: 'yourRoute', query: { userId: 123 } })`。然后在组件内部通过 `this.$route.query.userId` 来访问。
2. **Params 参数** (通常用于路径的一部分):
- **动态路由匹配**: 和 query 类似,也是使用冒号 `:` 定义变量,但是不会显示在 URL 查询字符串中,而是作为路径的一部分。如 `/users/123`,`123` 就是一个 params 参数。
- **设置和获取**: 可以通过 `this.$route.params` 或者 `$route.matched[0].meta.params` 来访问。`$route.matched` 是当前路由以及所有祖先路由的对象数组。
为了在组件之间传递这些参数,可以使用 `props` 或者 `$emit` 触发自定义事件。例如:
```javascript
// 父组件传递数据给子组件
router.push({
name: 'childComponent',
params: {
id: userId
}
})
// 子组件接收并处理参数
export default {
props: ['id'],
created() {
console.log(this.id);
}
}
```
阅读全文