vue2生命周期函数

2018-12-10 16:38:51  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处



一、前言

    在前端开发中经常会有Vue生命周期的一些操作,所以整理记录一下。

       

二、生命周期都有哪些及使用场景


  2.1、beforeCreate

        该函数在实例对象刚被创建,还没有绑定属性时触发执行。

        通常用于插件开发中执行一些初始化任务。

   2.2、created

        该函数在实例对象完成创建和属性绑定,但是DOM还未生成($el属性还不存在)时触发执行。

        通常用于异步数据获取。

    2.3、beforeMont

        该函数在组件挂载之前触发执行。

    2.4、mounted

        该函数在组件挂载完成之后触发执行

        可用作于获取访问数据和Dom元素

    2.5、beforeUpdate

        该函数在组件数据更新之前触发执行

        可用于获取更新前的各种状态

    2.6、updated

        该函数在组件数据更新完成之后触发执行

    2.7、beforeDestory

        该函数在实例对象销毁之前触发执行

        可用作于定时器或者订阅的取消。

    2.8、destory

        该函数在实例对象完成销毁之后触发执行。

        可用作于定时器或者订阅的取消


三、各阶段钩子函数分析


    3.1、beforeCreated -> created

        初始化vue实例,进行数据观测

    3.2、created

        完成数据观测,属性与方法的运算,watch、event事件回调的配置
        可调用methods中的方法,访问和修改data数据触发响应式渲染dom,可通过computed和watch完成数据计算
        此时vm.$el 并没有被创建

    3.3、created -> beforeMount

        判断是否存在el选项,若不存在则停止编译,直到调用vm.$mount(el)才会继续编译
        优先级: render > template > outerHTML
        vm.el获取到的是挂载DOM的

    3.4、beforeMount

        在此阶段可获取到vm.el
        此阶段vm.el虽已完成DOM初始化,但并未挂载在el选项上

    3.5、beforeMount -> mounted

        此阶段vm.el完成挂载,vm.$el生成的DOM替换了el选项所对应的DOM

    3.6、mounted

        vm.el已完成DOM的挂载与渲染,此刻打印vm.$el,发现之前的挂载点及内容已被替换成新的DOM

    3.7、beforeUpdate

        更新的数据必须是被渲染在模板上的(el、template、render之一)
        此时view层还未更新
        若在beforeUpdate中再次修改数据,不会再次触发更新方法


    3.8、updated

        完成view层的更新
        若在updated中再次修改数据,会再次触发更新方法(beforeUpdate、updated)

    3.9、beforeDestroy

        实例被销毁前调用,此时实例属性与方法仍可访问

    3.10、destroyed

        完全销毁一个实例。可清理它与其它实例的连接,解绑它的全部指令及事件监听器
        并不能清除DOM,仅仅销毁实例

四、附生命周期图解



更多精彩请持续关注:guangmuhua.com



最新评论: