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 相关文章推荐
利用javascript中的call实现继承
Jan 22 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
js面向对象编程之如何实现方法重载
Jul 02 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
jquery自定义表单验证插件
Oct 12 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
Angular2 http jsonp的实例详解
Aug 31 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
微信小程序 Storage更新详解
Jul 16 Javascript
JS运算符简单用法示例
Jan 19 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
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
提高python代码运行效率的一些建议
2020/09/29 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
Yahoo的PHP面试题
2014/05/26 面试题
饮料业务员岗位职责
2013/12/15 职场文书
高考寄语大全
2014/04/08 职场文书
四风对照检查材料范文
2014/09/27 职场文书
工作简报怎么写
2015/07/21 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS