vue-router--动态路由

821 阅读2分钟

什么是动态路由

就比如说一种情况,以我前公司的listing-detail页面来举例,listing-detail页面是房源详情页,每个房源详情页都有不同的id。所以他们最终的path都是listing-detail/+id的形式,比如说/listing-detail/6543132类似这种。这其实就是一个动态路由,基本用于由一分多的情形。就是他们都属于一个分支,但是又有自己独特的标识,这个标识是动态的,所以就称为动态路由。

如何给动态路由配置映射关系

他是这种形式配置动态路由的映射关系 (Detail是我导入的一个组件)
其实应该很好理解,动态路由第一个部分是一致的,所以是写死的,这里就是listing-detail,但是后面应该是不确定的,后面是什么,也不确定,所以这里是一个变量,这个变量自己命名我这命名的是id。待会这个动态路由第二部分的东西就传给了id变量。
这层映射关系实际的意思是告诉浏览器,当path等于/listing-detail/????的形式时,加载对应的组件。

如何拿到那个变量值

怎么在组件中拿到那个变量值(也就是这里的id值)呢?
之前我们说过,所有的组件都有一个$router属性,实际上这个属性对应的是什么呢?它就是对应的我们生成的那个路由实例!。其实组件中还有一个$route属性。这个组件就是获取当前活跃的路由。生成路由实例的时候有个routes属性,就是这里面的每一个元素都是一个路由,而$route属性会取得当前活跃的路由。 比如这里我需要在Detail组件中展示相应页面的id值。实现它!
这里我先实现两个router-link,可以改变url为listing-detail/???形式的 那接下来我就是要获取到'1'/'2'那我在listing-detail.vue中(即Detail组件中)获取到它。 这就是获取到它的方式:this.$route.params.变量名。简单描述一下,组件的$route属性可以获取当前活跃的路由,this.$route.params获取的是这个路由的参数。而刚刚定义的id就被当作了参数之一。所以是this.$route.params.id

展示效果