在Vue中,编程式路由传参主要有以下几种方式:
通过params传参
显示参数:可以在URL中看到参数,适用于需要将参数作为路径一部分的情况。
声明式:使用`router-link`组件的`to`属性或`this.$router.push`方法,并指定路径参数。
编程式:使用`this.$router.push`方法,并传递一个包含路径参数的对象。
不显示参数:参数不会显示在URL中,适用于需要将参数作为路由别名的一部分的情况。
声明式:使用路由的`name`属性进行传值。
编程式:使用`this.$router.push`方法,并传递一个包含`name`和`params`的对象。
通过query传参
参数会显示在URL中,适用于不需要将参数作为路径一部分的情况。
使用`this.$router.push`方法,并传递一个包含`query`的对象。
通过URL字符串拼接传参
直接在路径中拼接参数,适用于需要将参数作为路径一部分的情况。
使用`this.$router.push`方法,并传递一个字符串路径。
示例1:通过params传参(显示参数)
```javascript
// 声明式
// 编程式
this.$router.push({ name: 'Child', params: { id: 123 } });
```
示例2:通过params传参(不显示参数)
```javascript
// 声明式
// 编程式
this.$router.push({ name: 'Child', params: { id: 123 } });
```
示例3:通过query传参
```javascript
// 编程式
this.$router.push({ path: '/Search', query: { k: this.keyword.toUpperCase() } });
```
示例4:通过URL字符串拼接传参
```javascript
// 编程式
this.$router.push({ path: `/result/${id}` });
```
示例5:通过params和query一起传参
```javascript
// 编程式
this.$router.push({ name: 'Search', params: { keyword: this.keyword }, query: { k: this.keyword.toUpperCase() } });
```
总结
选择哪种传参方式取决于具体需求,例如是否需要将参数显示在URL中、是否需要将参数作为路由别名的一部分等。在实际应用中,可以根据具体情况选择最适合的传参方式。