vue router 传对象
时间: 2024-09-10 22:17:01 浏览: 37
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页应用变得易如反掌。在 Vue Router 中传递对象,通常是通过路由的 `params` 或者 `query` 来实现的。
1. 使用 `params` 传递对象:
如果你想通过动态路由传递对象,可以在路由路径中使用参数,并在 `params` 中传递对象。首先,需要在路由配置中定义一个接收参数的路由:
```javascript
{
path: '/user/:id',
component: User,
}
```
然后,在跳转到该路由的时候,将对象序列化后作为 `params` 传递:
```javascript
this.$router.push({ name: 'User', params: { id: JSON.stringify(userObject) } });
```
在目标组件中,可以通过 `this.$route.params` 获取到序列化后的对象字符串,然后进行反序列化:
```javascript
const userObject = JSON.parse(this.$route.params.id);
```
2. 使用 `query` 传递对象:
另一种方法是通过查询字符串(query)传递对象。这种方式不需要在路由配置中做任何改变,只需要在跳转时将对象转换为查询参数:
```javascript
this.$router.push({ name: 'User', query: { user: JSON.stringify(userObject) } });
```
在目标组件中,同样使用 `this.$route.query` 获取到序列化后的对象字符串,并反序列化:
```javascript
const userObject = JSON.parse(this.$route.query.user);
```
需要注意的是,在这两种方式中传递对象时,由于 URL 中只能包含字符串,因此对象必须先转换成字符串形式。而在目标组件中,需要将这个字符串再转换回对象。
阅读全文