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 getElementsByTagName
Jan 31 Javascript
用Jquery重写windows.alert方法实现思路
Apr 03 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
Jquery基础教程之DOM操作
Aug 19 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
Angular 多模块项目构建过程
Feb 13 Javascript
解决Vue-cli无法编译es6的问题
Oct 30 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通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
JavaScript 注册事件代码
2011/01/27 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Cpy和Python的效率对比
2015/03/20 Python
利用Python实现图书超期提醒
2016/08/02 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python pandas 时间日期的处理实现
2019/07/30 Python
详解Python文件修改的两种方式
2019/08/22 Python
介绍一下Python下range()函数的用法
2013/11/07 面试题
北京大学自荐信范文
2014/01/28 职场文书
公司保密承诺书
2014/03/27 职场文书
离婚协议书范本
2015/01/26 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
如何理解PHP核心特性命名空间
2021/05/28 PHP