zoukankan      html  css  js  c++  java
  • vue之生命周期与导航守卫

    组件钩子函数:

    beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destoryed

    还有两个特殊的(使用keep-alive):activated、deactivated(不详述)

    v2.5.0+新增: errorCaptured (暂时还不知道咋用)

    路由守卫:

    全局&路由独享:

    beforeEach、beforeResolve(v2.5.0+新增)、afterEach ;beforeEnter(路由独享,类似beforeEach)

    组件内:

    beforeRouteEnter、beforeRouteUpdate (2.2 新增)、beforeRouteLeave

    代码示例:

    //Router定义
    
    Vue.use(Router)
    
    const router = new Router({
        ...
    })
    
    //导航守卫
    
    router.beforeEach((to, from, next) => {
      console.log("导航前置守卫: beforeEach,");
      next();
    })
    router.afterEach((to, from) => {
      console.log("导航后置守卫: afterEach,");
    }) 
    router.beforeResolve ((to, from, next) => {
      console.log("导航解析守卫: beforeResolve,");
      next();
    }) 

    组件钩子:

    export default {
      //钩子
      beforeCreate(){
        console.log("组件钩子: beforeCreate");
      },
      created(){
        console.log("组件钩子: created");
      },
      beforeMount(){
        console.log("组件钩子: beforeMount");
      },
      mounted(){
        console.log("组件钩子: mounted");
      },
      beforeUpdate(){
        console.log("组件钩子: beforeUpdate");
      },
      updated(){
        console.log("组件钩子: updated");
      },
      beforeDestroy(){
        console.log("组件钩子: beforeDestroy");
      },
      destoryed(){
        console.log("组件钩子: destoryed");
      },
      beforeRouteEnter (to, from, next) {
        console.log("组件内部守卫: beforeRouteEnter,");
        next()
      },
      beforeRouteUpdate (to, from, next) {
        console.log("组件内部守卫: beforeRouteUpdate,");
        next()
      },
      beforeRouteLeave (to, from, next) {
        console.log("组件内部守卫: beforeRouteLeave,");
        next()
      }
    }

    执行输出顺序:

        导航前置守卫: beforeEach
        组件内部守卫: beforeRouteEnter
        导航解析守卫: beforeResolve
        导航后置守卫: afterEach
        组件钩子: beforeCreate
        组件钩子: created
        组件钩子: beforeMount
        组件钩子: mounted
        //执行跳转
        组件内部守卫: beforeRouteLeave
        导航前置守卫: beforeEach
        导航解析守卫: beforeResolve
        导航后置守卫: afterEach
        组件钩子: beforeDestroy
  • 相关阅读:
    MySQL 之 Metadata Locking 研究
    Spring, MyBatis 多数据源的配置和管理
    ThreadLocal 源码剖析
    Java多线程中的死锁问题
    Java并发基础框架AbstractQueuedSynchronizer初探(ReentrantLock的实现分析)
    PriorityQueue和Queue的一种变体的实现
    被我们忽略的HttpSession线程安全问题
    Java并发之原子变量和原子引用与volatile
    使用Java实现单线程模式
    这些年无处安放的博客
  • 原文地址:https://www.cnblogs.com/fanlu/p/10825275.html
Copyright © 2011-2022 走看看