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加入收藏夹功能(兼容IE、firefox、chrome)
May 05 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
微信小程序 生成携带参数的二维码
Oct 23 Javascript
Vue表单控件数据绑定方法详解
Feb 05 Javascript
Javascript异步编程async实现过程详解
Apr 02 Javascript
Vue 构造选项 - 进阶使用说明
Aug 14 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 split汉字
2009/06/05 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
Python类属性的延迟计算
2016/10/22 Python
python基础教程项目二之画幅好画
2018/04/02 Python
python中for用来遍历range函数的方法
2018/06/08 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python基于opencv检测程序运行效率
2019/12/28 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
运动会广播稿诗歌版
2014/09/12 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python