四、Vue Router 设置动态路由

动态路由配置

/user/foo/user/bar都映射到相同的路由。也就是说根据不同的ID,渲染相同的User组件。可以使用动态路径参数来达到这个效果。

动态路径参数使用冒号:标记,后面为参数的名称,参数会被设置到this.$route.params中。

<script>
    // 匹配模式
    /user/:username
    // 匹配到的路径为
    /user/evan
    // $route.params 获取到的参数对象
    { useranme: 'evan' }
</script>

注意::冒号的配置可以理解为正则匹配,因此你可以在最后设置一个?的惰性匹配,表示可以出现 0 次或 1次。

相应路由参数的变化

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

复用组件时,相对路由参数的变化作出相应的话,可以使用watch(监听)$route对象的变化。也可以使用beforeRouteUpdate路由更新的导航守卫。

<script>
    const User = {
        template: '...',
        // 1. 通过监听路由对象变化的形式
        watch: {
            '$route' (to, from) {
                // 对路由变化作出响应
            }
        },
        // 2. 通过更新路由的钩子函数
        beforeRouteUpdate (to, from, next) {
            // 路由变化会触发...
        }
    }
</script>  

捕获所有路由或404 Not found 路由

匹配任意路径,可以使用通配符(*);注意:使用通配符路由时,必须放在配置的最后。通常用于客户端404错误。

<script>
    { path: '*' } // 会匹配所有路径
    { path: '/user-*' } // 会匹配以 /user- 开头的任意路径
</script>

使用通配符时,$route.params内会自动添加一个名为pathMatch参数。注意:pathMatch获取的是*部分的内容

<script>
    // { path: '/user-*' }
    this.$router.push('/user-admin');
    this.$router.params  // 获取到的是 { pathMatch: 'admin' }
</script>

高级路由配置

原文地址:https://www.cnblogs.com/yuxi2018/p/11967265.html

时间: 2024-07-31 03:16:19

四、Vue Router 设置动态路由的相关文章

VUE—路由(四)导航守卫&amp;动态路由

1.在个人中心中做个表单,当表单中有内容时,跳转到其他页面做个提醒 除了beforeRouteLeave在组件中还有其他路由函数,统称导航守卫 2.当从个人中心跳到学术讨论的时候,学术讨论页面也知道跳转进来了,这个函数叫beforeRouteEnter 原文地址:https://www.cnblogs.com/tianya-guoke/p/11509461.html

Cisco Packet Tracer 动态路由RIP配置

一.拓扑图 二.PC.路由IP配置 PC0: PC1: route0配置: Router>enRouter#conf tEnter configuration commands, one per line. End with CNTL/Z.Router(config)#hostname route0route0(config)#int f0/0route0(config-if)#ip ad 192.168.1.1 255.255.255.0route0(config-if)#no sh %LIN

Nuxt的动态路由及路由校验入门

其实动态路由就是带参数的路由.比如我们现在新闻模块下面有很多新闻详情页,这时候就需要动态路由的帮助了. 新闻详细页面我们在news文件夹下面新建了_id.vue的文件,以下划线为前缀的Vue文件就是动态路由,然后在文件里边有$route.params.id来接收参数. /pages/news/_id.vue <template> <div> <h2>News-Content{{$route.params.id}}</h2> <ul> <li

Nuxt配置动态路由以及参数校验

动态路由就是带参数的路由.比如我们商品列表里很多商品详细页,这时候就需要动态路由的帮助了. 比如我们新建一个commodity文件夹,新建一个index.vue 文件,然后新建一个_id.vue (以下画线为前缀的Vue文件就是动态路由,然后在文件里边有 $route.params.id来接收参数) index.vue (可以写三种方式): <a href="/commodity/123">commodity1</a> <nuxt-link to=&quo

Vue.js路由管理器 Vue Router

起步 HTML <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <div id="app"> <h1>Hello App!</h1> <p>

Vue系列:Vue Router 路由梳理

Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数.查询.通配符 基于 Vue.js 过渡系统的视图过渡效果 细粒度的导航控制 带有自动激活的 CSS class 的链接 HTML5 历史模式或 hash 模式,在 IE9 中自动降级 自定义的滚动条行为 1.动态路由 动态路由,可以将某种模式匹配到的所有路由,并全都映射到同个组件. (通俗点,比如根

vue动态添加路由addRoutes之不能将动态路由存入缓存

在我不知道vue的路由还可以通过addRoutes动态添加时,我只知道vue的路由都是写死在路由表中的,每当跳转时再去加载相应的路由.直到在一个新公司接到需要根据用户的权限显示不同的菜单的需求时才知道了原来vue-router还有一个addRoutes的API,立马研究了一下. router.addRoutes: 函数签名: router.addRoutes(routes: Array<RouteConfig>) 动态添加更多的路由规则.参数必须是一个符合routes选项要求的数组. 点这里去

Vue Router 路由守卫:完整的导航解析流程

完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). 5 在路由配置里调用 beforeEnter. 6 解析异步路由组件. 7 在被激活的组件里调用 beforeRouteEnter. 8 调用全局的 beforeResolve 守卫 (2.5+). 9 导航被确认. 10 调用全局的 afterEach 钩子. 11 触发 DOM 更新. 12 用

每天一点点之vue框架开发 - vue-router路由进阶(路由别名、跳转、设置默认路由)

路由别名 别名的作用:防止文件路径泄露 使用之前显示如下: 使用别名后就只会显示到域名,后面的文件是不会显示的,这就起到保护的作用了 在main.js中的路由中添加name来创建别名 const routes = [ {path:'/footer',name:footerLink,component:Footer} ] 在组件中的路由中通过对象属性来实现路由 <router-link :to="{name:homeLink}">Mirror微申</router-lin