vue this.$router 的用法

this.$router 在 Vue.js 中是一个非常有用的实例属性,它代表了 Vue Router 的实例。通过这个实例,你可以访问到路由的多种功能,比如编程式导航、获取当前路由信息等。以下是一些 this.$router 的用法示例:

1. 编程式导航

编程式导航是 Vue Router 提供的另一种导航方式,与 <router-link> 组件的声明式导航相对。你可以使用 this.$router.push 或 this.$router.replace 方法来实现编程式导航。

// 使用 push 方法导航到不同的 URL,这个方法会向 history 栈添加一个新的记录  
this.$router.push('/some-path');  
  
// 或者使用对象  
this.$router.push({ path: '/some-path' });  
  
// 使用 name,如果路由配置了 name  
this.$router.push({ name: 'someRouteName', params: { userId: 123 }});  
  
// 使用 replace 方法,它不会向 history 添加新记录,而是替换掉当前的 history 记录  
this.$router.replace('/some-path');

2. 导航守卫

虽然 this.$router 本身不直接用于定义导航守卫,但它是实现导航守卫的关键。在 Vue Router 中,你可以使用全局守卫、路由独享的守卫、组件内的守卫来守卫导航。这些守卫可以基于用户权限、路由状态等条件决定是否允许导航。


                
### Vue2 中 `this.$router` 实例方法及其用法Vue 2 中,`this.$router` 是由 Vue Router 插件提供的重要实例对象之一。它允许开发者通过编程方式操作路由,实现诸如导航跳转、参数传递等功能[^1]。 #### 常见的 `this.$router` 方法及其实现示例 1. **编程式导航** 使用 `this.$router.push()` 可以实现在应用内部进行页面跳转的功能。该方法接受目标路径或命名路由作为参数。 ```javascript this.$router.push('/home'); // 跳转至 /home 页面 this.$router.push({ path: '/about' }); // 同样可以使用对象形式指定路径 this.$router.push({ name: 'user', params: { userId: 123 }}); // 跳转至带有动态参数的命名路由 ``` 2. **返回上一页** 利用 `this.$router.back()` 方法可以让用户回到前一历史记录中的页面。 ```javascript this.$router.back(); // 返回至上一个浏览过的页面 ``` 3. **前进到下一页** 类似于浏览器的历史前进按钮,可以通过调用 `this.$router.forward()` 来实现这一功能。 ```javascript this.$router.forward(); // 进入下一个浏览过的历史页面 ``` 4. **替换当前路由而不添加新记录** 如果希望更新地址栏而不会向历史栈中增加新的条目,则可采用 `this.$router.replace()` 方法替代默认行为。 ```javascript this.$router.replace('/login'); // 替换当前 URL 至登录页 this.$router.replace({ name: 'profile', query: { tab: 'settings' }}); ``` 5. **获取当前路由信息** 尽管主要涉及的是 `$route` 对象的操作,但有时也需要借助 `$router.currentRoute` 获取完整的路由状态(注意:Vue Router 3.x 版本中仍需解构为 `.path`, `.query` 等字段)。 ```javascript console.log(this.$router.currentRoute.path); console.log(this.$router.currentRoute.query.page); ``` 6. **监听路由变化** 开发者还可以利用 `watch` 或事件机制监控路由变动情况并作出响应处理逻辑调整。 ```javascript watch: { '$route'(to, from) { console.log('路由已改变:', to.fullPath); } } ``` 7. **动态路由传参与接收** 结合实际开发场景来看,当需要从子组件向父级传输数据时,可通过组合使用 `push` 和 `params` 完成交互过程[^5]。 ```javascript // 子组件 userMessage.vue 发送数据给父组件 userManager.vue methods: { sendDataToParent() { const userData = { id: 987, username: "Alice" }; this.$router.push({ name: "userManager", params: userData }); } } ``` ```javascript // 父组件 userManager.vue 接收来自子组件的数据 mounted() { if (this.$route.params.id && this.$route.params.username) { console.log(`Received User Data - ID: ${this.$route.params.id}, Username: ${this.$route.params.username}`); } }, ``` 以上即是对 Vue2 中 `this.$router` 几种核心方法的具体介绍以及相应代码片段展示[^1][^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值