vue-router 导航钩子的具体使用方法


Posted in Javascript onAugust 31, 2017

vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消。

全局钩子

1、router.beforeEach 注册一个全局的 before 钩子:

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
 // ...
})

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

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

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

2.afterEach同理,只是不用传入next函数

示例:一个单页面应用,返回首页时,保存其在首页的浏览位置。并且给每一个页面title赋值

const router = new VueRouter({
 base: __dirname,
 routes
});

new Vue({ // eslint-disable-line
 el: '#app',
 render: h => h(App),
 router
});

let indexScrollTop = 0;
router.beforeEach((route, redirect, next) => {
 if (route.path !== '/') {
  indexScrollTop = document.body.scrollTop;
 }
 document.title = route.meta.title || document.title;
 next();
});

router.afterEach(route => {
 if (route.path !== '/') {
  document.body.scrollTop = 0;
 } else {
  Vue.nextTick(() => {
   document.body.scrollTop = indexScrollTop;
  });
 }
})

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

Javascript 相关文章推荐
往光标所在位置插入值的js代码
Sep 22 Javascript
用正则表达式替换图片地址img标签
Nov 22 Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
JavaScript中Require调用js的实例分享
Oct 27 Javascript
JS处理一些简单计算题
Feb 24 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
Mar 15 Javascript
vue+iview动态渲染表格详解
Mar 19 Javascript
express中static中间件的具体使用方法
Oct 17 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
浅谈express 中间件机制及实现原理
Aug 31 #Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
Aug 31 #Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
Aug 31 #Javascript
Angular2 http jsonp的实例详解
Aug 31 #Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 #Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 #Javascript
基于canvas粒子系统的构建详解
Aug 31 #Javascript
You might like
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
js查错流程归纳
2012/05/04 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
python实现保存网页到本地示例
2014/03/16 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
python实现动态数组的示例代码
2019/07/15 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python @property及getter setter原理详解
2020/03/31 Python
Python实现京东抢秒杀功能
2021/01/25 Python
地理科学专业毕业生求职信
2013/10/15 职场文书
会计岗位描述
2014/02/22 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
小学评语大全
2014/04/22 职场文书
离婚协议书格式
2014/11/21 职场文书
云台山导游词
2015/02/03 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
通知函的格式
2015/04/27 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
导游词之山东八大关
2019/12/18 职场文书