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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
做好七件事帮你提升jQuery的性能
Feb 06 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
微信小程序图片自适应支持多图实例详解
Jun 21 Javascript
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
浅谈React高阶组件
Mar 28 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
jquery简单体验
2007/01/10 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
JSX在render函数中的应用详解
2019/09/04 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
python概率计算器实例分析
2015/03/25 Python
使用Python生成XML的方法实例
2017/03/21 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python图像和办公文档处理总结
2019/05/28 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
Python Django路径配置实现过程解析
2020/11/05 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
劳动之星获奖感言
2014/02/01 职场文书
中班幼儿评语大全
2014/04/30 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS