• vue动态路由匹配


    vue动态路由匹配

    我们经常需要把某种模式匹配到的所有路由,全部映射到同个组件。例如,我们有一个User组件,对于ID各不相同的用户,都要使用这个组件来渲染。那么,我们可以在vue-router的路由路径中使用 “动态路径参数”(dynamic segment)来达到这个效果:

    const User = {
      template: '<div>User</div>'
    }
    
    const router = new VueRouter({
      routes: [
        // 动态路径参数 以冒号开头
        { path: '/user/:id', component: User }
      ]
    })
    

    现在呢,像/usr/foo 和 /user/bar 都将映射到相同的路由。

    一个“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。于是,我们可以更新 User 的模板,输出当前用户的 ID:

    const User = {
      template: '<div>User {{ $route.params.id }}</div>'
    }

    你可以看看这个在线例子

    你可以在一个路由中设置多段“路径参数”,对应的值都会设置到 $route.params 中。例如:

    模式匹配路径$route.params
    /user/:username /user/evan { username: 'evan' }
    /user/:username/post/:post_id /user/evan/post/123 { username: 'evan', post_id: 123 }

    除了 $route.params 外,$route 对象还提供了其它有用的信息,例如,$route.query (如果 URL 中有查询参数)、$route.hash 等等。你可以查看 API 文档 的详细说明。

    举例:显示xx的页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>demo4</title>
    </head>
    <body>
    <div id="app">
        <router-link to="/user/zs">张三</router-link>
        <router-link to="/user/ls">李四</router-link>
        <hr>
        <router-view></router-view>
    </div>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        //写路由
        const routeArray=[
            {
                path:'/user/:name',
                component:{
                    template:`<div>
                        <h1>这是{{$route.params.name}}的主页页面!</h1>
            </div>`
                }
            }
        ]
        //生成VueRouter实例
        const routerObj = new VueRouter({
            routes:routeArray
        })
        var app = new Vue({
            el:"#app",
            data:{},
            router:routerObj //将路由实例挂载到vue实例中
        })
    </script>
    </body>
    </html> 

    举例2: 获取url中的年龄和爱好

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>demo5</title>
    </head>
    <body>
    <div id="app">
        <!--路由的入口-->
        <!-- 使用 router-link 组件来导航. -->
        <!-- 通过传入 `to` 属性指定链接. -->
        <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
        <!--/index表示下面定义的path-->
        <router-link to="/user/张三">张三</router-link>
        <router-link to="/user/李四">李四</router-link>
        <hr>
        <!--路由的出口-->
        <!-- 路由匹配到的组件将渲染在这里 -->
        <router-view></router-view>
    </div>
    
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        //写路由
        const routeArray = [
            {
                path:'/user/:name',
                component:{
                    template:`<div>
                        <h1>这是{{$route.params.name}}的主页页面</h1>
                        <p>芳龄:{{$route.query.age}}</p>
                        <p>爱好:{{$route.query.hobby}}</p>
    </div>`
                }
            }
        ]
        //生成VueRouter实例
        const routerObj = new VueRouter({
            routes:routeArray
        })
        var app = new Vue({
            el:'#app',
            data:{},
            router:routerObj  //将路由实例挂载到vue实例中
        })
    </script>
    </body>
    </html>
    

      



  • 相关阅读:
    随笔分类目录
    数据结构与算法
    ASP.NET Web网站中App_Code文件夹的作用及使用场景
    Java语言入门
    C#语言入门_基本介绍
    汇编语言入门
    学期总结
    王者光耀作业2
    王者光耀作业1
    第三次作业
  • 原文地址:https://www.cnblogs.com/haowen980/p/9381492.html
Copyright © 2020-2023  润新知