zoukankan      html  css  js  c++  java
  • 397 vue路由对象

        vue-router的理解和使用
            router-view、router-link、keep-alive
            $router: 路由器对象, 包含一些操作路由的功能函数, 来实现编程式导航(跳转路由) 【VueRouter实例对象。】
            $route: 当前路由对象, `解析url信息`,一些当前路由信息数据的容器, path/meta/query/params
    



    • 一个路由对象 (route object) :表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息

    • 一个哈希值路径 ==> 一个路由对象

    • $route.path

      • 类型: string
      • 字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"
      • # 后面、?前面的内容
    • $route.params

      • 类型: Object 【掌握数据类型】
      • 一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
    • $route.query

      • 类型: Object
      • 参数对象
      • 一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。
    • $route.hash

      • 类型: string

        当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。 【hash:最后一个#开始的的字符串。】

    • $route.fullPath

      • 类型: string
      • 全路径
      • 完成解析后的 URL,包含查询参数和 hash 的完整路径。
    # 演示 : 
    <router-link to="/detail/4?age=21#one">detail</router-link>
    { path: '/detail/:id?', component: detail } 
    在组件内 created打印 this.$route
    > fullPath: "/detail/4?id=001#one"
    > hash : "#one"
    > params : {id:'4'}
    > query : {age : 21}
    > path : '/detail/4'
    

    06-$route.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8" />
      <title>Document</title>
    </head>
    
    <body>
      <!-- 
        $route:路由对象,解析的url信息,哈希值的url信息
        哈希值 (#/one/4?age=30#aaa) ==> $route 
      -->
    
      <div id="app">
        <!-- 1. 入口 -->
        <!-- <router-link to="/one/4?age=30#aaa">one</router-link> -->
        <router-link to="/one/1">第一个</router-link>
        <router-link to="/one/2">第二个</router-link>
    
        <!-- 4. 出口 -->
        <router-view></router-view>
      </div>
    
      <script src="./vue.js"></script>
      <script src="./node_modules/vue-router/dist/vue-router.js"></script>
      <script>
        // 3. 组件
        const One = {
          // 得在template中加上$route.params.id,才会调用updated
          template: `<div>one组件 {{ $route.params.id }}</div>`,
          // 经测试,在生命周期钩子函数中,要使用$route,前面得加this. ,否则报错,因为是事件;而在组件的其他地方,可加可不加
          created() {
            // 页面加载过程中的第一次的值,不会变化,因为created只执行一次
            console.warn(this.$route.params.id)
          },
          // 补充mounted、updated
          // mounted不能监听到 this.$route.params.id 的变化
          mounted() {
            console.log('mounted中的id是---', this.$route.params.id)
          },
          // updated能监听到 this.$route.params.id 的变化
          updated() {
            console.log('updated中的id是---', this.$route.params.id)
          },
          // 重要(★)
          // 使用watch 监听 $route 路由对象,获取里面的信息 【url变了,$route跟着变。之前监听复杂类型时,是复杂类型的地址没变,只是它里面的数据变化了而已。】
          watch: {
            $route(newVal) {
              console.warn(newVal)
              console.warn(newVal.params.id)
            }
          }
        }
    
        //  实例化
        const router = new VueRouter({
          // 2. 规则
          routes: [{
            path: '/one/:id',
            component: One
          }]
        })
    
        const vm = new Vue({
          router,
          el: '#app',
          data: {}
        })
      </script>
    </body>
    
    </html>
    
  • 相关阅读:
    如何解决秒杀的性能问题和超卖的讨论
    Redis作者谈Redis应用场景
    Net开源工作流Roadflow的使用与集成
    VisualStudioOnline协同工作流程
    中文乱码?不,是 HTML 实体编码!(转)
    Nginx搭建反向代理服务器过程详解(转)
    2016年1月15日面试某互联网公司总结(转)
    浏览器缓存知识小结及应用(转)
    Gradle多项目配置的一个demo
    Android getResources的作用和须要注意点
  • 原文地址:https://www.cnblogs.com/jianjie/p/12539491.html
Copyright © 2011-2022 走看看