vue3生命周期钩子
【摘要】 Vue 3 引入了 Composition API,这允许开发者以一种更加模块化和可复用的方式组织和复用代码。尽管 Options API 仍然被支持,但 Composition API 提供了一些新的生命周期钩子,并且可以更灵活地管理组件的生命周期。以下是 Vue 3 中常用的生命周期钩子及其对应的 Options API 和 Composition API 表示方式: Options A...
Vue 3 引入了 Composition API,这允许开发者以一种更加模块化和可复用的方式组织和复用代码。尽管 Options API 仍然被支持,但 Composition API 提供了一些新的生命周期钩子,并且可以更灵活地管理组件的生命周期。
以下是 Vue 3 中常用的生命周期钩子及其对应的 Options API 和 Composition API 表示方式:
Options API 生命周期钩子
-
beforeCreate
- 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
-
created
- 在实例创建完成后被立即调用。在这一步,实例已完成数据观测、属性和方法的运算,
watch/event
事件回调。然而,挂载阶段还没开始,$el
属性目前不可见。
- 在实例创建完成后被立即调用。在这一步,实例已完成数据观测、属性和方法的运算,
-
beforeMount
- 在挂载开始之前被调用:相关的 render 函数首次被调用。
-
mounted
el
被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果根实例挂载到了文档内,当 mounted 被调用时,组件已经在其真实的 DOM 里。
-
beforeUpdate
- 数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
-
updated
- 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用这个钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致无限更新循环。
-
beforeUnmount
- 在卸载组件实例之前调用。在这个阶段,实例仍然是完全可用的。
-
unmounted
- 卸载组件实例后调用。调用后,组件实例指示的所有东西都会解绑,所有的事件监听器会被移除,所有的子实例也会被销毁。
Composition API 生命周期钩子
Vue 3 的 Composition API 提供了与 Options API 相对应的生命周期钩子函数,这些函数需要在 setup
函数中调用。
-
beforeCreate 和 created
- 在
setup
函数中,由于setup
是在beforeCreate
和created
之间执行的,所以这两个生命周期钩子在setup
函数中无法直接使用。但是,setup
函数本身可以视为一个替代。
- 在
-
beforeMount 和 mounted
onBeforeMount
和onMounted
-
beforeUpdate 和 updated
onBeforeUpdate
和onUpdated
-
beforeUnmount 和 unmounted
onBeforeUnmount
和onUnmounted
示例代码
Options API
<template>
<div>Hello, Vue 3!</div>
</template>
<script>
export default {
name: 'MyComponent',
data() {
return {
message: 'Hello, Vue 3!'
};
},
beforeCreate() {
console.log('beforeCreate');
},
created() {
console.log('created');
},
beforeMount() {
console.log('beforeMount');
},
mounted() {
console.log('mounted');
},
beforeUpdate() {
console.log('beforeUpdate');
},
updated() {
console.log('updated');
},
beforeUnmount() {
console.log('beforeUnmount');
},
unmounted() {
console.log('unmounted');
}
};
</script>
Composition API
<template>
<div>Hello, Vue 3!</div>
</template>
<script>
import { onMounted, onUpdated, onBeforeUnmount, onUnmounted } from 'vue';
export default {
name: 'MyComponent',
setup() {
onMounted(() => {
console.log('mounted');
});
onUpdated(() => {
console.log('updated');
});
onBeforeUnmount(() => {
console.log('beforeUnmount');
});
onUnmounted(() => {
console.log('unmounted');
});
// 其他 Composition API 代码
return {};
}
};
</script>
使用 Composition API 时,生命周期钩子是通过导入和调用对应的函数来实现的,这使得在大型组件中更容易管理和复用逻辑。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)