详解vue-router 2.0 常用基础知识点之导航钩子


Posted in Javascript onMay 10, 2017

导航钩子

vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消。有多种方式可以在路由导航发生时执行钩子:全局的, 单个路由独享的, 或者组件级的。

全局钩子

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
  // do something 
  next();
});

router.afterEach((to, from, next) => {
  console.log(to.path);
});

每个钩子方法接收三个参数:

  1. to: Route : 即将要进入的目标 [路由对象]
  2. from: Route : 当前导航正要离开的路由
  3. next: Function : 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next

方法的调用参数。

  1. next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是confirmed (确认的)。
  2. next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from
  3. 路由对应的地址。
  4. next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

确保要调用 next方法,否则钩子就不会被 resolved。

组件内的钩子

let fromPath = '';
export default{
  beforeRouteEnter (to, from, next) {
     // 在渲染该组件的对应路由被 confirm 前调用
     // 不!能!获取组件实例 `this`
     // 因为当钩子执行前,组件实例还没被创建
     fromPath = from.path;
     next();
  },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 Javascript
Vue自定义render统一项目组弹框功能
Jun 07 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 #Javascript
JavaScript通过filereader接口读取文件
May 10 #Javascript
关于vue-router路径计算问题
May 10 #Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 #Javascript
Bootstrap table使用方法总结
May 10 #Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 #Javascript
vue-axios使用详解
May 10 #Javascript
You might like
上海无线电三厂简史修改版
2021/03/01 无线电
PHP 金额数字转换成英文
2010/05/06 PHP
php生成短域名函数
2015/03/23 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
jQuery 入门讲解1
2009/04/15 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
javascript基本类型详解
2014/11/28 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
使用Python操作excel文件的实例代码
2017/10/15 Python
python读取图片任意范围区域
2019/01/23 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
三分钟演讲稿事例
2014/03/03 职场文书
借款协议书范本
2014/04/22 职场文书
教研处工作方案
2014/05/26 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
浅析MySQL如何实现事务隔离
2021/06/26 MySQL