Vue3 生命周期 - 2024最新版前端秋招面试短期突击面试题【100道】 🔄
在Vue.js中,生命周期钩子是组件从创建到销毁过程中的一系列事件。理解Vue的生命周期对于掌握组件的行为和调试至关重要。Vue 3引入了Composition API,改变了生命周期函数的使用方式。以下是关于Vue 2和Vue 3生命周期的详细解释。
Vue 2 生命周期钩子 🌱
在Vue 2中,组件生命周期包括多个钩子函数,主要有:
- beforeCreate:实例刚被创建,数据还未初始化。
- created:实例创建完成,数据已初始化。
- beforeMount:模板渲染前,DOM还未挂载。
- mounted:实例已挂载,DOM已渲染。
- beforeUpdate:数据更新前。
- updated:数据更新后,DOM已更新。
- beforeDestroy:实例销毁前。
- destroyed:实例已销毁。
示例代码(Vue 2)
new Vue({el: '#app',data() {return {msg: 'Hello Vue!'};},beforeCreate() {console.log("beforeCreate,挂载了vue实例的方法,但是data没有挂载", this.msg);},created() {console.log("created,挂载了data", this.msg);},beforeMount() {console.log("data没有渲染到了页面", document.getElementById("app").innerHTML);},mounted() {console.log("mounted data渲染到了页面", document.getElementById("app").innerHTML);},beforeUpdate() {console.log("beforeUpdate数据更改导致DOM更改之前", document.getElementById("app").innerHTML);},updated() {console.log("updated数据更改导致DOM更改之后", document.getElementById("app").innerHTML);},beforeDestroy() {console.log("beforeDestroy");},destroyed() {console.log("destroyed");}
});
Vue 3 生命周期钩子 🌳
在Vue 3中,使用Composition API,生命周期钩子的使用方式发生了变化。以下是与Vue 2对应的生命周期钩子:
- onBeforeMount:组件渲染前。
- onMounted:组件已挂载。
- onBeforeUpdate:组件更新前。
- onUpdated:组件更新后。
- onBeforeUnmount:组件卸载前。
- onUnmounted:组件已卸载。
示例代码(Vue 3)
const { createApp, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, ref } = Vue;const app = createApp({setup() {const msg = ref("你好11111111111");console.log("1");onBeforeMount(() => {console.log("onBeforeMount data没有渲染到了页面", document.getElementById("app").innerHTML);});onMounted(() => {console.log("onMounted data渲染到了页面", document.getElementById("app").innerHTML);setTimeout(() => {msg.value = "hello";}, 1000);});onBeforeUpdate(() => {console.log("onBeforeUpdate");});onUpdated(() => {console.log("onUpdated");});onBeforeUnmount(() => {console.log("onBeforeUnmount");});onUnmounted(() => {console.log("onUnmounted");});return { msg };}
});app.mount('#app');
总结 📖
Vue 2 生命周期钩子
- beforeCreate 和 created:用于初始化。
- beforeMount 和 mounted:用于处理DOM操作。
- beforeUpdate 和 updated:用于响应数据变化。
- beforeDestroy 和 destroyed:用于清理工作。
Vue 3 生命周期钩子
- 引入了
setup
函数,钩子的使用方式变为函数调用,提升了灵活性。 - 移除了
beforeCreate
和created
,用setup
替代。 destroy
改为了unmount
,使得语义更加明确。
理解Vue的生命周期及其在不同版本中的变化,将帮助你更好地管理组件的状态和行为,提高开发效率。在面试中能清晰地解释这些概念,将使你更具竞争力!