VUE3 router.push如何传参
时间: 2025-05-23 13:52:26 浏览: 79
### Vue 3 中 `router.push` 的传参方法
在 Vue 3 中,`router.push` 是一种常用的路由跳转方法,可以用来传递参数给目标页面。以下是详细的说明以及示例:
#### 1. 使用 `query` 参数传递数据
当使用 `query` 方式传递参数时,这些参数会被附加到 URL 后面作为查询字符串显示出来。
```javascript
// 传递参数
const router = useRouter();
router.push({
path: '/target',
query: { id: 1, name: 'John' }
});
```
在这种情况下,URL 将变为 `/target?id=1&name=John`[^3]。
在目标组件中可以通过 `$route.query` 来访问这些参数:
```javascript
console.log(this.$route.query.id); // 输出 1
console.log(this.$route.query.name); // 输出 John
```
---
#### 2. 使用 `params` 参数传递数据
如果希望隐藏参数并将其嵌入路径中,则可以选择 `params` 方式。这种方式通常用于动态路由匹配场景。
##### 示例代码
```javascript
// 传递参数
const router = useRouter();
router.push({
name: 'TargetRouteName',
params: { id: 1, name: 'John' }
});
```
此时,URL 不会直接展示参数内容,而是依赖于定义好的动态路由规则。例如,在路由配置文件中需设置如下规则:
```javascript
{
path: '/target/:id/:name?',
name: 'TargetRouteName',
component: TargetComponent
}
```
在目标组件中可通过 `$route.params` 访问这些参数:
```javascript
console.log(this.$route.params.id); // 输出 1
console.log(this.$route.params.name); // 输出 John
```
需要注意的是,`params` 参数无法与 `path` 属性一同使用,必须通过 `name` 指定目标路由名称[^4]。
---
#### 3. 组合使用 `query` 和 `params`
虽然较少见,但在某些复杂场景下也可以同时使用两者。不过需要特别注意其适用范围和优先级问题。
```javascript
router.push({
name: 'TargetRouteName',
params: { id: 1 },
query: { sort: 'asc' }
});
```
这将生成类似于以下的 URL:
```
/target/1?sort=asc
```
---
### 总结
- **Query**: 显示在 URL 中,适用于公开透明的数据传输。
- **Params**: 嵌套在路径内部,常用于动态路由设计。
- 如果涉及动态路由,请确保路由配置中有对应的占位符声明。
```python
# 动态路由配置样例
[
{
"path": "/user/:userId",
"component": UserComponent,
"name": "User"
}
]
```
阅读全文
相关推荐


















