Skip to content

Vue 生命周期 #65

Open
Open
@TieMuZhen

Description

@TieMuZhen

Vue 生命周期总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/后

  • 创建前/后:beforeCreate阶段,由于还未初始化,vue实例的挂载元素el和数据对象data都为undefined。在created阶段,vue实例的数据对象data有了,el还没有。

  • 载入前/后:beforeMount阶段,vue实例$eldata都初始化了,但挂载之前还是为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。

  • 更新前/后: 当data变化时,会触发beforeUpdateupdated方法。

  • 销毁前/后: 在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在。

第一次页面加载会触发哪几个钩子?

第一次页面加载时会触发beforeCreate, created, beforeMount, mounted这几个钩子

DOM渲染在 哪个周期中就已经完成?

DOM渲染在mounted中就已经完成了。

简单描述每个周期具体适合哪些场景?

生命周期钩子的一些使用方法:

  • beforecreate : 可以在此阶段加loading事件,在加载实例时触发;

  • created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用;

  • mounted : 挂载元素,获取到DOM节点

  • updated : 如果对数据统一处理,在这里写上相应函数;

  • beforeDestroy : 可以做一个确认停止事件的确认框;

  • nextTick : 更新数据后立即操作dom

在created和mounted这两个生命周期中请求数据有什么区别呢?

放在mounted请求有可能导致页面闪动(页面dom结构已经生成),但如果在create生命周期当中完成则不会出现此情况

引用文献

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions