Vue2面试题:说一下vue2的生命周期?

发布时间:2023年12月18日

? ??创建:

? ? ? ? beforecreate:

? ? ? ? ? ? 实例创建前

? ? ? ? ? ? 此阶段的data、methods、computed、watch的数据和方法不能被访问

? ? ? ? created:

? ? ? ? ? ? 实例创建完成后

? ? ? ? ? ? 此阶段完成数据监听,可以使用数据、更改数据。无法与Dom进行交互,想要的话可以通过nextTick来访问。

??? 挂载:

? ? ? ? beforeMount:

? ? ? ? ? ? 页面渲染前

? ? ? ? ? ? 此阶段虚拟Dom已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发updated。

? ? ? ? mounted:

? ? ? ? ? ? 页面渲染完成后

? ? ? ? ? ? 此阶段真实Dom渲染完毕,数据完成双向绑定,可以访问到Dom节点,使用$refs属性对Dom进行操作。

??? 更新:

? ? ? ? beforeUpdate:

? ? ? ? ? ? 响应式数据更新前

? ? ? ? ? ? 此阶段更改数据,不会造成页面重新渲染。

? ? ? ? updated:

? ? ? ? ? ? 响应式数据更新完成后

? ? ? ? ? ? 避免在此阶段更改数据,因为这可能会导致无限循环的更新。

??? 销毁:

? ? ? ? beforeDestroy:

? ? ? ? ? ? 实例销毁前

? ? ? ? ? ? 我们可以在这时进行善后收尾工作,比如清除定时器、解除绑定事件

? ? ? ? destroyed:

? ? ? ? ? ? 实例销毁完成后

? ? 缓存:

? ? ? ? activited:

? ? ? ? ? ? keep-alive专属,组件被激活时调用

? ? ? ? deactivited:??

? ? ? ? ? ? keep-alive专属,组件被销毁时调用

? ? 1、异步请求放在created还是mounted:

? ? ? ? 如果是单单的一个父级组件,放哪里都无所谓。

? ? ? ? 如果涉及到了要控制子父组件先后显示正确内容的时候,就可以考虑下父组件的请求要放在哪个钩子里了。想要子组件先拿到数据渲染就放在mounted中,想要父组件先拿到数据就放在created中。

? ? 2、第一次加载页面触发了创建、挂载生命周期

? ? 3、父子组件生命周期执行顺序:

? ? ? ? 组件渲染的顺序是先父后子,渲染完成的顺序是先子后父

? ? ? ? 组件更新的顺序是先父后子,更新完成的顺序是先子后父

? ? ? ? 组件销毁的顺序是先父后子,销毁完成的顺序是先子后父

文章来源:https://blog.csdn.net/m0_74802419/article/details/134960878
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。