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 相关文章推荐
让人期待的2011年度最佳 jQuery 插件分享
Mar 16 Javascript
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
JavaScript中的变量定义与储存介绍
Dec 31 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
May 11 Javascript
Node.js开启Https的实践详解
Oct 25 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
Dec 06 Javascript
Vue中的transition封装组件的实现方法
Aug 13 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
浅谈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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
php实现单链表的实例代码
2013/03/22 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
运动会稿件100字
2014/02/21 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
初中家长意见
2015/06/03 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
丧事答谢词大全
2015/09/30 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书