vue-router 导航钩子的具体使用方法
vue-router提供的导航钩子主要用来拦截导航,让它完成跳转或取消。
全局钩子
1、router.beforeEach注册一个全局的before钩子:
constrouter=newVueRouter({...}) 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赋值
constrouter=newVueRouter({ base:__dirname, routes }); newVue({//eslint-disable-line el:'#app', render:h=>h(App), router }); letindexScrollTop=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; }); } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。