`

Vue-Router通过代码进行导航

    博客分类:
  • Vue
阅读更多

原文地址: http://www.hxstrive.com/article/597.htm

 

除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 JavaScript 代码通过 router 的实例方法来实现导航。

router.push(location, onComplete?, onAbort?)
在 Vue 实例内部,你可以通过 this.$router 访问路由实例。因此你可以调用 this.$router.push()。想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。


当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push(...)。

该方法的参数可以是一个字符串路径,或者一个描述地址的对象(<router-link :to="youLink"></router-link>)。例如:
//  字符串
router.push('home')
 
//  对象
router.push({ path: 'home' })
 
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
 
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path:
const userId = '123'
 
// -> /user/123
router.push({ name: 'user', params: { userId }})
 
// -> /user/123
router.push({ path: `/user/${userId}` })
 
// 这里的 params 不生效
// -> /user
router.push({ path: '/user', params: { userId }})
同样的规则也适用于 router-link 组件的 to 属性。


在 2.2.0+,可选的在 router.push 或 router.replace 中提供 onComplete 和 onAbort 回调作为第二个和第三个参数。这些回调将会在导航成功完成 (在所有的异步钩子被解析之后) 或终止 (导航到相同的路由、或在当前导航完成之前导航到另一个不同的路由) 的时候进行相应的调用。


注意:
如果目的地和当前路由相同,只有参数发生了改变 (比如从一个用户资料到另一个 /users/1 -> /users/2),你需要使用 beforeRouteUpdate / watch 来响应这个变化 (比如抓取用户信息)。

 

router.replace(location, onComplete?, onAbort?)
跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。如:

this.$router.replace("menu")


router.go(n)
这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。例子:
// 在浏览器记录中前进一步,等同于 history.forward()
router.go(1)
 
// 后退一步记录,等同于 history.back()
router.go(-1)
 
// 前进 3 步记录
router.go(3)
 
// 如果 history 记录不够用,那就默默地失败呗
router.go(-100)
router.go(100)


操作 History
你也许注意到 router.push、 router.replace 和 router.go 跟 window.history.pushState、window.history.replaceState 和 window.history.go 好像, 实际上它们确实是效仿 window.history API 的。

还有值得提及的,Vue Router 的导航方法 (push、 replace、 go) 在各类路由模式 (history、 hash 和 abstract) 下表现一致。

分享到:
评论

相关推荐

    Vue-router入门教程笔记

    通过这个Vue-router入门教程,你可以快速掌握如何在Vue项目中管理和导航页面,进一步提升开发效率和用户体验。持续学习和实践,你将能更好地利用Vue-router的高级特性和功能,为你的SPA应用构建出更加灵活和强大的...

    vue3.x+vite+ts+vue-router@4.x 路由使用demo

    Vue Router 的配置也可以用 TypeScript 进行类型检查,增强代码的可读性和可靠性。 4. **Vue Router 4.x**:Vue Router 4.x 配置路由时,主要涉及`createRouter`和`createWebHistory`方法。路由定义包括 path、...

    vue.mini.js vue-router.js

    6. **编程式导航**:除了通过链接进行导航,还可以在组件的方法中使用`this.$router.push`或`this.$router.replace`进行编程式导航。 Vue Router支持多种高级特性,比如: - **命名路由**:通过`name`属性给路由...

    管理系统系列--Vue2.0+Vue-router+ElementUI实现的后台管理系统模板.zip

    Vue-router通过定义路由规则,实现不同视图之间的导航。它支持路径参数、动态段、命名视图、嵌套路由等特性,使开发者可以灵活地设计和控制应用的导航流程。 【ElementUI】:ElementUI是一套为开发者、设计师和产品...

    vue-router-demo

    通过研究这些配置文件和Vue Router的代码实现,你可以深入了解一个完整的Vue项目是如何构建和管理的,以及Vue Router在其中发挥的关键作用。同时,这也是一个提升你对前端开发流程、依赖管理和测试自动化理解的好...

    vue+vue-router+webpack框架搭建.doc

    Vue+Vue-Router+Webpack 框架搭建 本文档介绍了使用 Vue、Vue-Router 和 Webpack 搭建单页面 Web 应用的框架。该框架使用 Vue 作为 JavaScript 框架,实现页面逻辑的控制和处理;使用 Vue-Router 作为路由,实现单...

    Vue3.0+Vant3.0+Vue-Router4.0高仿微信记账本H5项目。.zip

    Vue-Router是Vue.js官方的路由管理器,对于单页应用(SPA)的导航控制至关重要。Vue-Router4.0的改进有: 1. **与Vue3兼容**:完全适配Vue3的新特性,如Composition API。 2. **懒加载优化**:路由懒加载功能更加...

    vue-router3.0.1.js.zip

    5. **编程式导航**:Vue实例上提供了`$router.push`、`$router.replace`、`$router.go`等方法,使得可以通过代码控制页面的跳转。 6. **路由懒加载**:允许按需加载路由组件,以减少初始加载时的体积,提高应用性能...

    vue-router案例.zip

    在基于 VueRouter 的后台管理系统中,路由扮演着至关重要的角色,它负责连接不同的组件和视图,实现页面间的导航和数据传递。下面将详细介绍如何在 Vue 项目中运用 Vue Router 实现后台管理功能。 1. **安装 Vue ...

    Vue-router版离线参考手册.zip

    2. **导航守卫**:Vue Router提供了多种级别的导航守卫,如全局前置守卫、组件级守卫和路由独享守卫,用于在导航发生时进行控制,比如权限验证、数据预加载等。例如,全局前置守卫可以这样定义: ```javascript ...

    基于Vue+Vue-Router+Vuex+Element-ui+axios,参考小米商城,实现的电商项目。.zip

    首先,Vue-Router是Vue.js官方的路由管理器,它允许我们在单页面应用(SPA)中定义和管理不同的路由,实现页面间的平滑切换。通过设置路由规则,我们可以根据URL路径动态加载对应的组件,从而实现页面的无刷新跳转。...

    Vue中在新窗口打开页面及Vue-router的使用

    在 Vue-router 中,可以使用编程式导航来控制路由的跳转。下面将介绍编程式导航的使用方法: 1. 使用 router.push 方法 router.push 方法可以将路由推送到 history 栈中,例如: ```javascript router.push('home...

    07-vue-router详解.pdf

    要使用Vue-router,首先需要通过npm来安装,然后在模块化工程中使用Vue.use()方法进行路由功能的安装和配置。安装Vue-router后,开发者可以创建路由实例,并在实例中定义路由规则,包括路径、组件以及嵌套路由、路由...

    Vue-Router路由配置+尾部组件实例

    基础配置包括创建一个新的`VueRouter`实例,然后通过`routes`数组定义路由。每个路由对象通常包含`path`(路径)、`component`(对应的组件)和其他可选属性,如`name`(路由的名字)、`props`(传递给组件的属性)...

    使用vue2.x + vue-cli +vue-router+ vuex + axios + mysql + exp.zip

    2. **Vue Router**:Vue Router是Vue.js官方的路由管理器,它使我们能够轻松地在组件之间导航,并维护应用程序的状态。通过定义路由规则,我们可以实现页面间的平滑过渡,同时支持懒加载和命名视图等高级特性。 3. ...

    使用 vue-router2.0创建单页简单导航.pdf

    4. **创建Vue实例并挂载路由器**:在Vue实例中,使用`new VueRouter({ routes })`创建一个路由器实例,然后将它作为选项传递给Vue构造函数。 ```javascript const router = new VueRouter({ routes // (缩写) ...

    vue+vue-router+webpack框架搭建参考.pdf

    通过定义和导航不同的路由,Vue-router可以在组件树之间进行导航,而无需手动操作DOM。 3. **Webpack** 是一个模块打包工具,它可以将各种资源(如JavaScript、CSS、图片等)转换并打包成浏览器可以理解的格式。在...

    【JavaScript源代码】详解Vue-Router的安装与使用.docx

    然后,在`src/router/index.js`文件中,你需要导入Vue和VueRouter,并使用`Vue.use(VueRouter)`来启用Vue对Vue-Router的支持。接着,创建一个新的VueRouter实例,并在Vue实例化时将其注入到配置的`router`选项中: ...

    vue-router异步加载实例代码

    7. **编程式导航**:除了通过 `router-link` 进行导航,Vue Router 还提供了 `this.$router.push()` 方法,允许你在组件中通过 JavaScript 进行编程式导航。 通过这个"vue-router异步加载实例代码",你可以深入学习...

    vue-router

    除了使用`&lt;router-link&gt;`,还可以通过调用`this.$router.push()`在代码中实现导航: ```javascript this.$router.push('/about') this.$router.push({ name: 'UserProfile', params: { id: 123 } }) ``` 7. *...

Global site tag (gtag.js) - Google Analytics