vue的生命周期都有哪些?
vue的生命周期都有哪些?使用时机和作用?
Vue和React的生命周期很类似,都分为三个阶段:初始化、运行中、销毁
初始化阶段
当组件或者实例进行初始化的时候,会执行beforeCreate,此时数据还没有挂载,dom也无法访问到。
接下来组件开始挂载数据,进行数据劫持、绑定,然后执行created,此时已经可以访问到数据,依然无法访问到dom,根据文档说明来看,在这里可以执行一些watch监听的动作,也可以允许一些异步初始化动作的执行,比如获取异步数据,但是根据react的规范来看,render前最好还是不要做一些副作用的动作。
接下来,组件去查找模板并进行编译,等等渲染,执行beforeMount,此时,依然无法访问dom,与created作用类似。
然后组件开始进渲染,渲染完成后,执行mounted,此时可以获取到渲染出来的dom节点,并且也标志着组件的初始化阶段结束,在这个钩子函数中,可以调用初始的接口去获取数据、操作dom、实例化插件、绑定事件等等的副作用动作都可以执行。
运行中阶段
当数据发生变化的时候,立即执行beforeUpdate,在这里不能更改数据,会出现死循环,也不能操作dom,因为还没有重新渲染,所以在这里只能做一些日志输出、埋点等动作。
组件开始重新渲染, 渲染后执行updated,此时可以操作重新渲染后的dom,去实现插件的更新等动作,注意:任何的数据变化都会引起updated执行,所以要注意数据间的互相影响,推荐采用watch + nextTick或者watch + flush:post(Vue3)来精准的在某一个或者多个数据变化后引起的dom更新完成后执行某些动作。
销毁阶段
当组件销毁的时候,会执行beforeDestroy和destroyed、beforeUnmount和unmounted,在这两个钩子函数中,可以去执行一些善后的工作,比如取消事件监听、清除计时器等动作。
相关推荐HOT
更多>>布局之浮动基础方法
再次回归到原始效果,先来看一下容器浮动以后的特点:给一号容器添加浮动,你会发现二号容器进行了补位。现在,实现让这些 li 容器横向排列,只...详情>>
2023-02-20 17:42:13css布局之定位方法
position 属性指定了一个元素定位方式,它有五个不同的类型值:static 静态定位,relative 相对定位,fixed 固定定位,absolute 绝对定位,stic...详情>>
2023-02-20 17:41:02必考两种盒模型说下理解
CSS 盒模型本质上是一个盒子,盒子包裹着HTML 元素,盒子由四个属性组成,从内到外分别是:content 内容、padding 内填充、border 边框、外边距...详情>>
2023-02-17 17:40:16SPA首屏加载速度慢的问题?
在服务器我们也要做相应的配置 如果发送请求的浏览器支持gzip,就发送给它gzip格式的文件 我的服务器是用express框架搭建的 只要安装一下compre...详情>>
2023-02-15 18:06:22