冇事来学系--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 算法 前端开发
七千字深度剖析 Vue3 的调度系统(上)
七千字深度剖析 Vue3 的调度系统(上)
206 0
|
JavaScript 调度 UED
七千字深度剖析 Vue3 的调度系统(下)
七千字深度剖析 Vue3 的调度系统(下)
132 0
|
前端开发 JavaScript 网络架构
夏天到了,聊一聊Vue的动态路由
夏天到了,聊一聊Vue的动态路由
夏天到了,聊一聊Vue的动态路由
|
缓存 JavaScript 开发者
冇事来学系--Vue2.0中动态组件和插槽slot
动态组件指的是动态切换组件的显示与隐藏。
501 0
|
存储 前端开发 JavaScript
冇事来学系--Vue2.0中路由Router
路由的概念与原理 路由(router),就是对应关系。即 Hash地址(锚点链接) 与 组件 之间的对应关系 注意:锚点链接的特点-->不会刷新页面,但是会产生浏览历史
204 0
|
JavaScript 前端开发
冇事来学系--Vue2.0中讲讲生命周期吧
生命周期(Life Cycle) 是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。 生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。 生命周期函数中的this指向的是vm或组件实例对象
177 0
|
JavaScript 容器
冇事来学系--Vue2.0中VueComponent(组件)
组件的本质 组件的本质就是一个 构造函数 f VueComponent (options) { this._init(options); } ,是Vue.extend( )生成的 当我们使用组件时,写了组件的标签,Vue解析时就会创建该组件的实例对象,即Vue帮我们执行了这一句代码 new VueComponent(options) (options就是我们写的data、methods、computed等数据) 每次调用Vue.extend( )时,返回的都是一个全新的VueComponent
308 0
|
JavaScript
冇事来学系--Vue2.0 组件开发详讲(下)
组件的自定义属性props props节点是和data、methods等同级的节点,值是一个数组
130 0
|
JavaScript 开发者 索引
冇事来学系--Vue2.0条件渲染和列表渲染指令
条件渲染指令用来按需控制DOM的显示与隐藏
126 0
好客租房90-react路由基础学习目标
好客租房90-react路由基础学习目标
86 0
好客租房90-react路由基础学习目标