vue3 路由跳转带参数
时间: 2025-06-13 11:57:59 浏览: 16
### Vue3 中实现带参数的路由跳转
在 Vue3 中,可以通过多种方式实现带参数的路由跳转。以下是几种常见的方法及其示例代码:
#### 1. 使用 `query` 参数传递数据
通过 `query` 参数传递数据时,参数会直接显示在 URL 中,例如:`/product/detail?id=123`。
```javascript
// 跳转时传递参数
const router = useRouter();
router.push({
path: '/product/detail',
query: { id: 123, name: '张三' }
});
```
在目标页面中,可以通过 `useRoute()` 获取参数:
```javascript
import { useRoute } from 'vue-router';
const route = useRoute();
console.log(route.query.id); // 输出: 123
console.log(route.query.name); // 输出: 张三
```
这种方式适合传递简单的、不需要保密的参数[^2]。
---
#### 2. 使用 `params` 参数传递数据
通过 `params` 参数传递数据时,参数不会直接显示在 URL 中,而是通过路由名称进行匹配。需要注意的是,使用 `params` 参数时必须定义路由名称。
**路由配置:**
```javascript
{
path: '/detail/:id',
name: 'Detail',
component: Detail
}
```
**跳转时传递参数:**
```javascript
const router = useRouter();
router.push({
name: 'Detail',
params: { id: 123, name: '张三' }
});
```
**目标页面获取参数:**
```javascript
import { useRoute } from 'vue-router';
const route = useRoute();
console.log(route.params.id); // 输出: 123
console.log(route.params.name); // 输出: 张三
```
这种方式适合传递需要隐藏的参数,或者需要动态路径匹配的场景[^1]。
---
#### 3. 使用 `state` 参数传递数据(仅限同源)
`state` 参数允许在同源的情况下传递对象数据,且不会显示在 URL 中。
**跳转时传递参数:**
```javascript
const router = useRouter();
router.push({
path: '/product/detail',
state: { id: 123, name: '张三' }
});
```
**目标页面获取参数:**
```javascript
import { useRoute } from 'vue-router';
const route = useRoute();
console.log(route.state.id); // 输出: 123
console.log(route.state.name); // 输出: 张三
```
注意:`state` 参数仅适用于同源环境,且不支持服务端渲染[^2]。
---
#### 4. 使用 `hash` 参数传递数据
`hash` 参数可以用于传递一些额外的信息,但通常较少使用。
**跳转时传递参数:**
```javascript
const router = useRouter();
router.push({
path: '/about',
hash: '#team'
});
```
**目标页面获取参数:**
```javascript
import { useRoute } from 'vue-router';
const route = useRoute();
console.log(route.hash); // 输出: #team
```
这种方式适合传递一些简单的标记信息[^2]。
---
### 总结
- 如果需要将参数显示在 URL 中,推荐使用 `query` 参数。
- 如果需要隐藏参数或动态路径匹配,推荐使用 `params` 参数。
- 如果需要传递复杂对象且无需显示在 URL 中,可以考虑使用 `state` 参数。
- 如果只需要传递简单的标记信息,可以使用 `hash` 参数。
---
阅读全文
相关推荐
















