vue3.0的生命周期

Vue2.0版本与Vue3.0生命周期钩子函数变化:

Vue2选项式APIVue3选项式APIVue3组合式API
beforeCreatebeforeCreatesetup()
createdcreatedsetup()
beforeMountbeforeMountonBeforeMount
mountedmountedonMounted
beforeUpdatebeforeUpdateonBeforeUpdate
updatedupdatedonUpdated
beforeDestorybeforeUnmountonBeforeUnmount
destoryedunmountedonUnmounted

Vue3组合式API:因为 setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写。

注册生命周期钩子函数

举个例子,mounted 钩子可以用来在组件完成初始渲染并创建 DOM 节点后运行代码。

export default {
  mounted() {
    console.log(`the component is now mounted.`)
  }
}

还有其他一些钩子,会在实例生命周期的不同阶段被调用,最常用的是 mountedupdatedunmounted

所有生命周期钩子函数的 this 上下文都会自动指向当前调用它的组件实例。

注意:避免用箭头函数来定义生命周期钩子,因为如果这样的话你将无法在函数中通过 this 获取组件实例。

钩子函数

钩子是一种事件劫持机制,也就是说它会比你的事件更早进行执行处理。你可以简单地把它理解为vue的内置事件,但是这个内置事件是由你去配置的。

选项式API 的各个阶段生命周期钩子函数:

钩子函数描述
beforeCreate在初始化实例时调用。在处理其他选项(如data()或computed)之前,在props解析之后,初始化实例时立即调用。
created在实例处理完所有与状态相关的选项后调用。当调用这个钩子时,实例已完成以下的配置:响应数据、计算属性、methods和watchers。然而,挂载阶段还没开始,$el 属性目前不可用。
beforeMount在挂载开始之前被调用。调用此钩子时,组件已完成设置其响应状态,但尚未创建DOM节点。它即将第一次执行DOM渲染。(在服务器端渲染期间不会调用此钩子。)
mounted组件装载后被调用。el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。(所有子组件已装载,该组件DOM树已创建并插入到父容器中),在这个钩子通常用于执行访问DOM的操作,或者获取服务器数据并设置给data的操作。(在服务器端渲染期间不会调用此钩子。)
beforeUpdate由于组件状态修改触发更新,会在组件虚拟 DOM 重新渲染之前调用。在Vue更新DOM之前,可以使用此钩子访问DOM状态。你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。(在服务器端渲染期间不会调用此钩子。)
updated在组件由于状态更改而更新其DOM 重新渲染并更新真实DOM后调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。(在服务器端渲染期间不会调用此钩子。)
beforeUnmount在卸载组件实例之前调用。当调用这个钩子时,实例仍然完全可用。(在服务器端渲染期间不会调用此钩子。)
unmounted卸载组件后调用。调用后,组件所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被卸载。使用此钩子可以清除手动创建的副作用,例如计时器、DOM事件监听或服务器连接。(在服务器端渲染期间不会调用此钩子。)

create 和 mounted

钩子函数描述
beforecreatedel 和 data 并未初始化
created完成了data 数据的初始化,el没有
beforeMount完成了 el 和 data 初始化
mounted完成挂载

update

我们单击页面中的“更新数据”按钮,将数据更新。下面就能看到data里的值被修改后,将会触发update的操作。

注意beforeUpdate是指view层的数据变化前,不是data中的数据改变前触发。因为Vue是数据驱动的。注意观察弹窗就容易发现。

unmounted

Vue实例卸载完成后,原先实例生成的DOM元素也随之卸载。

生命名周期钩子函数用法

函数描述
beforecreate如可以在这加个loading事件
created在这结束loading,还做一些初始化,实现函数自执行
mounted在这发起后端请求,拿回数据,配合路由钩子做一些事情
beforeMount你确认删除XX吗?
mounted当前组件已被删除,清除例如计时器、DOM事件监听或服务器连接。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值