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

导航钩子

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

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

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

每个钩子方法接收三个参数:
**to: Route
**: 即将要进入的目标 [路由对象]
**from: Route
**: 当前导航正要离开的路由
**next: Function
**: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next
方法的调用参数。
next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from
路由对应的地址。
next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

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

组件内的钩子
let fromPath = '';
export default{
    beforeRouteEnter (to, from, next) {
         // 在渲染该组件的对应路由被 confirm 前调用
         // 不!能!获取组件实例 `this`
         // 因为当钩子执行前,组件实例还没被创建
         fromPath = from.path;
         next();
    },
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Vue-Router简介 Vue-Router是Vue.js官方维护的路由插件,同时也是官方推荐的路由插件。它与V...
    SunnySky_阅读 4,256评论 0 1
  • vue2有着深度继承的路由插件,即:vue-router,其中文的API地址。 vue-router与其他的路由(...
    白水螺丝阅读 17,654评论 0 17
  • 路由 动态路由匹配 我们经常需要把某种模式匹配到的所有路由,全部映射到同一个组件,例如我们有一个user组件用来展...
    羊烊羴阅读 4,136评论 0 0
  • vue-login-intercept 一个 Vue.js 的小demo 介绍 项目地址,有喜欢的欢迎 star ...
    无亦情阅读 14,196评论 4 21
  • 响应路由参数的变化 v-router提供的导航守卫主要用来通过跳转或者取消的方式守卫导航。有多种机会植入路由导航过...
    Gopal阅读 3,890评论 0 0

友情链接更多精彩内容