🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 传递参数的方式 >[success] 传递参数主要有两种类型: params和query ## params的类型: >[success] 配置路由格式: /router/:id > 传递的方式: 在path后面跟上对应的值 > 传递后形成的路径: /router/123, /router/abc ``` const User = { template: '<div>User {{ $route.params.id }}</div>' } const router = new VueRouter({ routes: [ { path: '/user/:id', component: User } ] }) ``` 化简: 参数解耦 >[success] 配置路由格式 > 配置路由格式: /router/:id 且参加 路由映射props:true > 子组件中通过props将Id的值接收 > 组件的路由为 /router/123, /router/abc ``` const User = { props: ['id'], template: '<div>User {{ id }}</div>' } const router = new VueRouter({ routes: [ { path: '/user/:id', component: User, props: true }, // 对于包含命名视图的路由,你必须分别为每个命名视图添加 `props` 选项: { path: '/user/:id', components: { default: User, sidebar: Sidebar }, props: { default: true, sidebar: false } } ] }) ``` 这样你便可以在任何地方使用该组件,使得该组件更易于**重用**和**测试**。 ## query的类型: >[success] 配置路由格式: /router, 也就是普通配置 > 传递的方式: 对象中使用query的key作为传递方式 > 传递后形成的路径: /router?id=123, /router?id=abc >[danger] 如何使用它们呢? 也有两种方式: <router-link>的方式和JavaScript代码方式 # 传递参数实现 ## 准备工作 为了演示传递参数, 我们这里再创建一个组件, 并且将其配置好 1. 创建新的组件`Profile.vue` 2. 配置路由映射 3. 添加跳转的`<router-link>` ![](https://img.kancloud.cn/02/2e/022e976709d0c8e48012e816392358f4_785x532.png) ![](https://img.kancloud.cn/5c/ba/5cba0fba0628b068fbdcd606729ffeea_943x334.png) ![](https://img.kancloud.cn/84/05/84053f13c46c7c195c47021b4f1d5374_970x496.png) ![](https://img.kancloud.cn/6d/2c/6d2c768cc3041b2d6e0ea8ecd46c6b10_291x318.png) ## 第一种`<router-link>` ![](https://img.kancloud.cn/45/d0/45d0c2d2796c40686cffc7b9a13c39cb_788x376.png) ![](https://img.kancloud.cn/d7/15/d715a32785a5d692df3bdf619f1e87fd_805x472.png) ## 第二种传递参数 ![](https://img.kancloud.cn/95/4f/954fcda85330f658b7be2e2cce573245_782x484.png) # 获取参数 ## 获取参数通过$route对象获取的. 在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新。 ## 通过$route获取传递的信息如下: ![](https://img.kancloud.cn/33/9c/339cbb5c5ee0057ab0cbdb64f400e191_1058x437.png) ## $route和$router是有区别的 `$router`为`VueRouter`实例,想要导航到不同URL,则使用`$router.push`方法。**一般用来操作跳由跳转的方法** `$route`为当前`router`跳转对象里面可以获取`name`、`path`、`query`、`params`等。**获取当前匹配路由参数** ***** ## 总结 >[success] 我们发现vue提供了许许多多的方式让我们去做各种事情,那么究竟该如何把它全部掌握呢?答案是多写案例就可以了。最好是在项目中充分运用。我们在这里先把一些概念了解清楚。后期项目中我们才可以考虑运用。 ## 案例