zoukankan      html  css  js  c++  java
  • 50 Vue 的 动态路由

    在某些情况下,一个页面的path路径可能是不确定的,比如我们进入用户界面时,希望是如下的路径:

    https://xxx/YYY/XXX/Username ,    即:后面还跟上了用户名 或  ID

    这种path和Component的匹配关系,我们称之为动态路由(也是路由传递数据的一种方式)。、

    对于这种写法 我们可以在定义路由映射 时的 path 属性这样写:

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Home from '../components/Home' //导入组件
    import About from '../components/About' //导入组件
    import User from  '../components/User'  //导入User的组件
    
    //注册路由插件
    Vue.use(VueRouter)
    
    //这里配置组件的映射和路径  【一个组件对应一个对象】
    const routes  = [
      {path:'/',component:Home},
      {path:'/home',component:Home},
      {path:'/about',component:About},
      {path:'/user/:userName',component:User}  //注意这里的path 斜杠冒号 后面跟了一个变量
    ]
    
    
    const router = new VueRouter({
      routes,
      mode:"history",
      linkActiveClass:"BiHu"
    })
    
    export default router
    路由配置文件

    User的组件代码:

    <template>
    <div>
      <h1><hr>个人<hr></h1>
      <h2><hr>欢迎您:<hr></h2>
    </div>
    </template>
    
    <script>
    export default {
      name: "User"
    }
    </script>
    
    <style scoped>
    
    </style>
    User.Vue 路由组件代码

    运行起来也就是这样的:  可以看到什么都没
    我们尝试在 url 后面加点什么:

     我随便加了个 /123 组件写的模板代码就出来了,但是,这里手动的,那就不是动态的了!!!!



    动态路由实现:

    这个username 这个数据 肯定是 后端穿过来的 如果存在data中 ,那么就好办了:

    路由path这样写: 完美结合

    <template>
      <div id="app">
    
        <router-link to="home" tag="button" replace  >Home</router-link>
        <router-link to="about" tag="button" replace  >About</router-link>
        <router-link :to="'/user/' + username"  tag="button" replace  >User</router-link>  <!-- 非常注意这个路径是  /开头 不然会出现路径嵌套 小细节...  主要是to 和 值绑定-->
       <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {
      name:"App",
      data(){   //模拟数据从后端过来
        return{username:"BiHu"}
      }
    }
    </script>
    
    <style>
    
    </style>
    App.vue App组件

    然后User组件这样写:

    <template>
    <div>
      <h1>个人</h1>
      <h2><hr>欢迎您:{{$route.params.userName}}<hr></h2>   <!--这里直接 取到动态路由最后那个变量username的值!-->
    </div>
    </template>
    
    <script>
    export default {
      name: "User"
    }
    </script>
    
    <style scoped>
    
    </style>
    User.vue 主要还是取值那个点

    运行:

    可以发现 这个BiHu 就是那个 动态路由Path最后那个变量中 取的,然后那个变量又是从  后端接口来的数据(这里是模拟) 取的!。  逻辑一定要清晰!

    2021年12月11日 13:28:42:

    注意定义路由的时候 带 /  和不带 /  路径的区别,带/是根路径改,不带/ 则是累加。

    路由嵌套也有说明.

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15134188.html

  • 相关阅读:
    最清晰易懂的Mysql CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP区别
    yield再理解--绝对够透彻
    解决pyspider框架web预览框过小问题
    python中的可哈希与不可哈希
    python json.dumps 中的ensure_ascii 参数引起的中文编码问题
    LeetCode 297. 二叉树的序列化与反序列化 | Python
    LeetCode 1300. 转变数组后最接近目标值的数组和 | Python
    LeetCode 30. 串联所有单词的子串 | Python
    LeetCode 739. 每日温度 | Python
    LeetCode 128. 最长连续序列 | Python
  • 原文地址:https://www.cnblogs.com/bi-hu/p/15134188.html
Copyright © 2011-2022 走看看