详解vue-router 2.0 常用基础知识点之导航钩子


Posted in Javascript onMay 10, 2017

导航钩子

vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消。有多种方式可以在路由导航发生时执行钩子:全局的, 单个路由独享的, 或者组件级的。

全局钩子

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
  // do something 
  next();
});

router.afterEach((to, from, next) => {
  console.log(to.path);
});

每个钩子方法接收三个参数:

  1. to: Route : 即将要进入的目标 [路由对象]
  2. from: Route : 当前导航正要离开的路由
  3. next: Function : 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next

方法的调用参数。

  1. next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是confirmed (确认的)。
  2. next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from
  3. 路由对应的地址。
  4. next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

确保要调用 next方法,否则钩子就不会被 resolved。

组件内的钩子

let fromPath = '';
export default{
  beforeRouteEnter (to, from, next) {
     // 在渲染该组件的对应路由被 confirm 前调用
     // 不!能!获取组件实例 `this`
     // 因为当钩子执行前,组件实例还没被创建
     fromPath = from.path;
     next();
  },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
BootStrap扔进Django里的方法详解
May 13 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
js 性能优化之快速响应的用户界面
Feb 15 Javascript
js编写选项卡效果
May 23 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
vue自定义指令directive实例详解
Jan 17 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
微信小程序自定义组件components(代码详解)
Oct 21 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 #Javascript
JavaScript通过filereader接口读取文件
May 10 #Javascript
关于vue-router路径计算问题
May 10 #Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 #Javascript
Bootstrap table使用方法总结
May 10 #Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 #Javascript
vue-axios使用详解
May 10 #Javascript
You might like
php5中类的学习
2008/03/28 PHP
php htmlspecialchars加强版
2010/02/16 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
2014过年倒计时示例
2014/01/31 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
php微信开发之图片回复功能
2018/06/14 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
javascript URL锚点取值方法
2009/02/25 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
深入探寻javascript定时器
2015/01/02 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
python多线程方式执行多个bat代码
2016/06/07 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
上课看小说检讨书
2014/02/22 职场文书
体育节口号
2014/06/19 职场文书
找工作求职信
2014/07/07 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
承诺函范文
2015/01/21 职场文书
离职感谢信
2015/01/21 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python