zoukankan      html  css  js  c++  java
  • Vue-Router动态路由匹配

    //重点在于路由出口
    <p> <!-- 使用 router-link 组件来导航. --> <!-- 通过传入 `to` 属性指定链接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <router-link to="/foo">Go to Foo</router-link> <router-link to="/bar">Go to Bar</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view>

    使用路由的步骤

    1:导入Vue和VueRouter,要调用 Vue.use(VueRouter)
    import Vue from 'vue'
    import Router from 'vue-router'
    Vue.use(Router)
    
    2:导入组件
    import XQNindex from '@/pages/index/XQNindex'
    
    3:定义路由
    const routes = [
      { path: '/foo', component: Foo },
      { path: '/bar', component: Bar }
    ]
    
    4:创建router实例,传入定义的路径作为参数
    const router = new VueRouter({
      routes // (缩写) 相当于 routes: routes//这玩意就是上面我们定义的路由
    })
    
    5:注入路由
    const app = new Vue({
      router //这玩意就是我们创建的实例
    }).$mount('#app')

    访问路由器和当前路由

    1:路由器   可以在任意组件当中访问
    this.$router
    2:访问当前路由
    this.$route
    3:这两个属性其实都已经放在this(当前组件的data返回对象)中

    路由器就是下面这玩意,我定义的路由里面包含了四个页面

    当前路由就是下面这玩意

    路由携带的参数的设置和读取

    1:如果我们这样定义路由,那么像这些玩意
    '/user/a1','/use/a2','/use/a3' 都映射到相同的路由,匹配同一个组件,动态路由参数
    const router = new VueRouter({
      routes: [
        // 动态路径参数 以冒号开头
        { path: '/user/:id', component: User }
      ]
    })
    不同的用户登录的时候,界面都是一样的,就是这个意思
    
    2:访问动态路由的参数,
    this.$toute.params.id //这里的属性id取决于你定义路由的时候
    
    3:一个路由还可以设置多个值啊
    /user/evan/post/123,/user/evand/post/456...等
    const router = new VueRouter({
      routes: [
        // 动态路径参数 以冒号开头
        { path: /user/:username/post/:post_id, component: User }
      ]
    })
    那么相应的参数对象{ username: 'evan', post_id: 123 } this.$route.params

     注意:当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用

    那么想对路由参数变化时做出响应:

    1:监听$route对象
    const User = {
      template: '...',
      watch: {
        '$route' (to, from) {
          // 对路由变化作出响应...
        }
      }
    }
    
    2:beforeRouteUpdate 导航守卫
    const User = {
      template: '...',
      beforeRouteUpdate (to, from, next) {
        // react to route changes...
        // don't forget to call next()
      }
    }
    3:常规参数只会匹配被'/'分割的字符,可以使用'*'匹配任意路由
    当使用通配符'*'的时候,$route.params内会自动添加一个pathMath参数,它只包含通配符匹配的部分

    4:同一个路径匹配多个路由的时候,匹配的优先级按照定义的先后,谁先定义就匹配谁

    5:高级模式待续.............
    不忘初心,不负梦想
  • 相关阅读:
    day3
    day2
    day1-存储
    day5-iptables
    MySQL之补充
    11.18
    11.17
    junit基础学习之-测试controller层(2)
    junit基础学习之-简介(1)
    外键和级联
  • 原文地址:https://www.cnblogs.com/panrui1994/p/9136523.html
Copyright © 2011-2022 走看看