冇事来学系--Vue2.0中动态路由分配

简介: 动态路由指的是:把Hash地址中可变的部分定义为参数项,从而提高路由规则的复用性

概念


动态路由指的是:把Hash地址中可变的部分定义为参数项,从而提高路由规则的复用性

在vue-router中使用英文的冒号(:)来定义路由的参数项

// 路由中的动态参数声明,冒号后面是动态参数的名称
{path: '/movie/:id', component: Movie}
// 上面的代码将以下3个路由规则合并成了一个,提高了路由规则的复用性
{path: '/movie/1', component: Movie},
{path: '/movie/2', component: Movie},
{path: '/movie/3', component: Movie}

使用动态路由时,如何具体的判别是哪一个组件?


如何获取动态参数?


方法一:通过this.$route,即路由的 参数对象

// 需求:在movie组件中,根据id的值展示对应电影的详细信息
// 在Movie组件中,打印this,输出的是Movie组件实例对象
// 在对象中有一个$route属性,值是一个对象。该对象中有一个params属性,属性值就是保存 我们设置的动态参数 的对象 params: {id: 1}
// 则通过this.$route.params.参数名,可以获得当前路由对应的参数的值(this.$route.params.id)

方法二:使用自定义属性props

配置路由规则的时候,要开启props传参,来获取动态参数的值****

// 在当前项目的路由模块src/router/index.js中
const router = new VueRouter({
  // routes是一个数组,作用:定义hash地址与组件之间的对应关系
  routes: [
    // 重定向的路由规则
    {path: '/', redirect: '/home'},
    // 路由规则
    {path: '/home', component: Home},
    // 动态路由    要开启props传参,才可以通过 自定义属性 获取这个动态参数的值
    // :id和:title就是传递的params参数  (由?开头,数据之间由&连接的是query参数)
    // props:布尔值,若布尔值为真,则该路由收到的所有params参数都以props的形式传给Movie组件
    {path: '/movie/:id/:title', component: Movie, props: true},
    {path: '/about', component: About, children: [  // children子路由规则    
      // 默认子路由:如果children数组中,某个路由规则的path值为空字符串,则这条路由规则就是 ‘默认子路由’
      {path: '', component: Tab1},
      {path: '/tab2', component: Tab2}
    ]}
  ]
})
export default router
// 在Movie组件中
<template>
  <div class="movie-container">
    <!-- this.$route是路由的"参数对象" -->
    <h3>Movie组件 --- {{this.$route.params.id}} --- {{ id }} </h3>
    <!-- 上面两个得到的id是一样的 -->
  </div>
</template>
<script>
  export default {
    name: 'Movie',
    props: ['id', 'title'], //接收props数据
  }
</script>

注意1:在hash地址中,/ 后面的参数项,叫做"路径参数"

在路由“参数对象”中,需要使用this.$route.params来访问 路径参数

注意2:在hash地址中,问号?后面的参数项,叫做“查询参数”

在路由“参数对象”中,需要使用this.$route.query来访问 查询参数

// 通过查询参数传递数据
<router-link to="/home/message/detail?id=666&title=你好啊"></router-link>
// 传递的数据可以通过$route.query来获取

注意3:在this.$route中,path属性是路径部分;fullpath是完整的地址

如:path的值是/movie/1 ; fullpath的值是/movie/1?name=zs&age=20

目录
相关文章
|
缓存 JavaScript 开发者
冇事来学系--Vue2.0中动态组件和插槽slot
动态组件指的是动态切换组件的显示与隐藏。
536 0
|
JavaScript
冇事来学系--Vue2.0路由懒加载和axios优化
路由懒加载 路由懒加载也可以叫做路由组件懒加载。经过了Webpack编译打包后,每个路由组件的代码分割成一个个js文件,初始化时不会加载这些js文件,只当激活路由组件才会去加载对应的js文件。
295 0
|
JavaScript
冇事来学系--Vue2.0中组件之间的数据共享
组件之间的数据共享 父子组件之间的数据传递
154 0
|
存储 前端开发 JavaScript
冇事来学系--Vue2.0中路由Router
路由的概念与原理 路由(router),就是对应关系。即 Hash地址(锚点链接) 与 组件 之间的对应关系 注意:锚点链接的特点-->不会刷新页面,但是会产生浏览历史
214 0
|
缓存 JavaScript
冇事来学系--Vue2.0 计算属性
计算属性 计算属性指的是通过一系列运算之后,最终得到一个属性值。这个动态计算出来的属性值可以被模板结构或methods方法使用
171 0
冇事来学系--Vue2.0中命名路由和路由的query和params
命名路由 在设置路由规则的时候,可以给路由指定一个name属性。 作用:可以简化路由的跳转
152 0
|
JavaScript
冇事来学系--Vue2.0过滤器
过滤器的本质是一个函数
152 0
|
JavaScript
【Vue2.0学习】—监视属性(三十五)
【Vue2.0学习】—监视属性(三十五)
|
JavaScript 前端开发
冇事来学系--Vue2.0中讲讲生命周期吧
生命周期(Life Cycle) 是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。 生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。 生命周期函数中的this指向的是vm或组件实例对象
189 0
|
JavaScript 开发者 索引
冇事来学系--Vue2.0条件渲染和列表渲染指令
条件渲染指令用来按需控制DOM的显示与隐藏
144 0

热门文章

最新文章