Vue2 Vue3 生命周期

Vue2:
<template>
<span>
<span id="msg">{{msg}}</span>
<input type="button" value="修改" @click="f1">
</span>
</template>
<script>
export default {
data() {
return {
msg: 'HelloWorld'
}
},
methods: {
hello(str) {
console.log(str + 'hello')
},
f1() {
this.msg = 'HelloVue'
}
},
beforeCreate() {
// beforeCreate在Vue实例创建之前,data中的数据和methods中的方法并没有初始化
// console.log('beforeCreate:' + this.msg) // undefined
// this.hello('beforeCreate:') // 报错
},
created() {
// 在created生命周期函数中,data中的数据和methods中的方法已经被初始化完成
console.log('created:' + this.msg) // HelloWorld
this.hello('created:') // hello
},
beforeMount() {
// 在beforeMount生命周期函数中,Vue开始编译模板、渲染数据,但数据只是在内存中渲染的,并没有真实挂载到HTML页面上
console.log('beforeMount:' + this.msg) // HelloWorld
// console.log('beforeMount:' + document.getElementById('msg').innerText)
console.log('beforeMount:' + document.getElementById('msg')) // null
},
mounted() {
// mounted生命周期函数,内存中的数据已经挂载到页面中,Vue实例创建完成
console.log('mounted:' + document.getElementById('msg').innerText) // HelloWorld
},
beforeUpdate() {
// beforeUpdate,Vue只是在内存中完成了编译,并没有挂载到真实页面中
console.log('beforeUpdate:' + this.msg) // HelloVue 是新的
console.log('beforeUpdate:' + document.getElementById('msg').innerText) // HelloWorld 是旧的
},
updated() {
// updated,把内存中修改后的数据挂载到页面中
console.log('updated:' + this.msg) // HelloVue 是新的
console.log('updated:' + document.getElementById('msg').innerText) // HelloVue 是新的
}
}
</script>
Vue3:
<template>
<span>
<span id="msg">{{msg}}</span>
<input type="button" value="修改" @click="f1">
</span>
</template>
<script setup>
import {
onBeforeMount,
onMounted,
onBeforeUpdate,
onUpdated,
onBeforeUnmount,
onUnmounted,
onActivated,
onDeactivated,
onErrorCaptured,
ref
} from "vue"
var msg = ref("HelloWorld");
function f1() {
console.log("f1:" + msg.value)
msg.value = 'HelloVue'
}
onBeforeMount(() => {
// 在beforeMount生命周期函数中,Vue开始编译模板、渲染数据,但数据只是在内存中渲染的,并没有真实挂载到HTML页面上
console.log('beforeMount:' + msg.value) // HelloWorld
// console.log('beforeMount:' + document.getElementById('msg').innerText)
console.log('beforeMount:' + document.getElementById('msg')) // null
})
onMounted(() => {
// mounted生命周期函数,内存中的数据已经挂载到页面中,Vue实例创建完成
console.log('mounted:' + document.getElementById('msg').innerText) // HelloWorld
})
onBeforeUpdate(() => {
// beforeUpdate,Vue只是在内存中完成了编译,并没有挂载到真实页面中
console.log('beforeUpdate:' + msg.value) // HelloVue 是新的
console.log('beforeUpdate:' + document.getElementById('msg').innerText) // HelloWorld 是旧的
})
onUpdated(() => {
// updated,把内存中修改后的数据挂载到页面中
console.log('updated:' + msg.value) // HelloVue 是新的
console.log('updated:' + document.getElementById('msg').innerText) // HelloVue 是新的
})
</script>
官方文档:
https://v2.cn.vuejs.org/v2/guide/instance.html#生命周期图示
https://v2.cn.vuejs.org/v2/api/#选项-生命周期钩子
https://cn.vuejs.org/guide/essentials/lifecycle.html#lifecycle-diagram 生命周期图示vue3

浙公网安备 33010602011771号