VueRouter–$router 获取函数

最后更新于:2022-04-02 08:08:11

[TOC] >[success] # $router -- 路由函数使用 ~~~ 1.先简化来看'Vue Router'的使用 1.1.需要先声明'Vue Router'实例在声明时候传入对应Router 构建选项作为参数 关于构建项具体参考'https://router.vuejs.org/zh/api/#routes' 1.2.并且把当前'Router' 实例挂载到vue上 简单的代码说明上述步骤: const router = new VueRouter({ routes:[{}...] }) const vm = new Vue({ // 注册 router 对象 // 注入 $route $router route包含当前route对象的数据 // router包含router方法以及路由一些信息 router, render: h => h(App) }).$mount('#app') 2.配置后,在去打印'Vue'实例如图可以发现此时,实例上挂载了一个$router 属性,并且 它是一个'VueRouter'的实例对象 3.关于'VueRouter'实例的路由对象内部会有关于路由相关的方法,其中'currentRoute'为当前路由对应 的路由信息对象也就是下一章节要说的'$route' 4.'$router'中包含路由函数的方法例如: 'go' ' back' ' forward' ' push' ' replace'等控制路由跳转一类的方法,当我们想 使用这些方法的时候首先想到'$router' 5.总结: 当想控制路由时候可以通过'VueRouter' 实例提供的方法进行操作,并且这个实例已经被挂在到了Vue 实例上,我们可以通过挂在实例上的'$router'来调用是等同的 ~~~ * 这个图是一个组件对象中所包含的属性可以看到$router ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/9945203ad7de4997dd0ea46572977fd8_631x453.png) >[danger] ##### 关于声明式和编程式 ~~~ 1.如果说Vue单页面应用中的路由跳转是通过'VueRouter'上的方法实现的,那么''是如何跳转? '解答':在官方文档中有解释道' 声明式写法','router.push(...)编程式写法', 点击 等同于调用 router.push(...) ~~~ >[info] ## push -- 连接跳转 ~~~ 1.this.$router.push('参数是路由地址')-- 跳转指定页 2.注意push 是在 history 栈添加一个新的记录,因此当使用后退功能的时候 可以后退到上一个网址 3.注意push路径参数都不带斜杠 4.当你点击 时,这个方法会在内部调用,所以说,点击 等同于调用 router.push(...)。 ~~~ >[danger] ##### 案例 -- 官方文档案例 ~~~ // 字符串 ,/home router.push('home') // 对象 ,/home router.push({ path: 'home' }) // 命名的路由(动态路由使用这种方式)-> /user/123 router.push({ name: 'user', params: { userId: '123' }}) // 带查询参数,变成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }}) ~~~ * 根据官方这四种方法,生成代码如下: ~~~ Examples
sapp
~~~ >[danger] ##### 官方给的注意事项 ~~~ 1.如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种 情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整 的带有参数的 path: const userId = '123' router.push({ name: 'user', params: { userId }}) // -> /user/123 router.push({ path: `/user/${userId}` }) // -> /user/123 // 这里的 params 不生效 router.push({ path: '/user', params: { userId }}) // -> /user ~~~ >[info] ## replace -- 替换 ~~~ 1.跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而 是跟它的方法名一样替换掉当前的 history 记录。简单的说就是历史记 录后退不是上一个而是前一个,因为他把上一个给替换成自己了 ~~~ >[info] ## back 和 go ,forward ~~~ 1.具体使用和上面的案例是一样的只不过将'push'方法替换成了'go' 和'and' 2.官方给的go 说明,官方案例中虽然使用的router调用但是还是推 荐'this.$router.go(1)' 去调用: // 在浏览器记录中前进一步,等同于 history.forward() router.go(1) // 后退一步记录,等同于 history.back() router.go(-1) // 前进 3 步记录 router.go(3) // 如果 history 记录不够用,那就默默地失败呗 router.go(-100) router.go(100) 3.forward 前进,跟go用法类似 4.back -- 返回上一页没有参数直接使用
';