美文网首页
vue(2)生命周期

vue(2)生命周期

作者: G莫_小语 | 来源:发表于2019-04-06 21:52 被阅读0次

    一、Vue生命周期

    生命周期.png.png
    • vue 生命周期有 创建、挂载、更新、销毁 四个阶段
    1. 创建前(beforeCreate):实例初始化之后,this指向创建的实例,不能访问到data、computed、watch、methods上的方法和数据。用于初始化非响应式变量
    2. 创建后(created):可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到el属性,refs属性内容为空。用于简单的ajax请求,页面的初始化
    3. 挂载前(beforeMount):编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发其他的钩子函数,一般可以在这里做初始数据的获取,可以访问 el(挂载根节点) 但是无法访问 refs(真实节点)
    4. 挂载后(mounted):组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情。用于获取数据后操作真实的DOM。
    5. 更新前(beforeUpdate):当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染,一般不做什么事儿
    6. 更新后(updated):当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom
    7. 销毁前(beforeDestroy): 当经过某种途径调用$destroy方法后,立即执行beforeDestroy,一般在这里做一些善后工作,例如清除计时器、清除非指令绑定的事件等等
    8. 销毁后(destroyed):组件的数据绑定、监听...去掉后只剩下dom空壳,这个时候,执行destroyed,在这里做善后工作也可以

    二、keep-alive 钩子函数

    1. activated:keep-alive 组件激活时调用。
    2. deactivated:keep-alive 组件停用时调用。
      注意:当引入keep-alive的时候,页面第一次进入,钩子的触发顺序created-> mounted-> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated。

    三、组件路由钩子函数

    1. beforeRouteEnter(进入组件之前):不能访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建。不过,你可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。
    beforeRouteEnter (to, from, next) {
      next(vm => {
        // 通过 `vm` 访问组件实例
      })
    }
    
    1. beforeRouteUpdate(子路由切换时执行):
    2. beforeRouteLeave(离开组件之前):通常用来提示用户在未保存某些修改而后退时的提示。该导航可以通过 next(false) 来取消。
    beforeRouteLeave (to, from , next) {
      if ('用户保存了') {
        next()
      } else {
        next(false)
      }
    }
    

    四、全局路由钩子函数

    1. beforeEach(进入路由之前):权限控制,开启进度条
    2. beforeResolve(路由确认时解析守卫):
    3. beforeEach(进入路由之后):关闭进度条

    相关文章

      网友评论

          本文标题:vue(2)生命周期

          本文链接:https://www.haomeiwen.com/subject/agfdiqtx.html