什么是生命周期?

Vue 2.x

每个组件(每个),都有自己独立的生命周期,都会经历上图的所有过程
Vue 3.x

每个组件(每个),都有自己独立的生命周期,都会经历上图的所有过程
生命周期函数

就是Vue实例被创建后,从开始到结束,期间会依次执行一些函数,这些函数就是生命周期函数,也叫钩子函数。
各版本生命周期函数对比
| Vue 2.x | Vue 3.x 普通 | Vue 3.x 组合API | 说明 | 
|---|---|---|---|
beforeCreate | 
beforeCreate | 
setup代替 | 组件创建前 | 
created | 
created | 
setup代替 | 组件创建后 | 
beforeMount | 
beforeMount | 
onBeforeMount | 
组件挂载DOM前 | 
mounted | 
mounted | 
onMounted | 
组件挂载DOM后 | 
beforeUpdate | 
beforeUpdate | 
onBeforeUpdate | 
组件因为响应式发生界面更新前 | 
updated | 
updated | 
onUpdated | 
组件因为响应式发生界面更新后 | 
beforeDestroy | 
beforeUnmount | 
onBeforeUnmount | 
组件即将被卸载 | 
destroyed | 
unmounted | 
onUnmounted | 
组件被卸载 | 
使用 (Vue 3.x)
<template><div><h2 ref="title">{{message}}</h2><button @click="changeMessage">修改message</button></div></template><script>export default {data() {return {message: "Hello Home"}},methods: {changeMessage() {this.message = "你好啊,李银河"}},beforeCreate() {console.log("home beforeCreate");},created() {console.log("home created");},beforeMount() {console.log("home beforeMount");},mounted() {console.log("home mounted");},beforeUnmount() {console.log("home beforeUnmount");},unmounted() {console.log("home unmounted");},beforeUpdate() {console.log(this.$refs.title.innerHTML);console.log("home beforeUpdate");},updated() {console.log(this.$refs.title.innerHTML);console.log("home updated");}}</script><style scoped></style>

使用 (Vue 3.x 组合API)
可以同时多个重复的生命周期,都会执行,方便抽取到外面
<template><div><h2 ref="title">{{message}}</h2><button @click="changeMessage">修改message</button></div></template><script>import {onMounted,onBeforeMount,onBeforeUnmount,onUnmounted,onBeforeUpdate,ref,onUpdated} from "vue";export default {setup() {console.log("home beforeCreate");console.log("home created");let message = ref("Hello Home");const changeMessage = () => {message.value = "你好啊,李银河"";};onBeforeMount(() => {console.log("home beforeMount");});onMounted(() => {console.log("home mounted");});onMounted(() => {console.log("home mounted111"); // 可以同时多个重复的生命周期,都会执行,方便抽取到外面});onBeforeUnmount(() => {console.log("home beforeUnmount");});onUnmounted(() => {console.log("home unmounted");});onBeforeUpdate(() => {console.log("message", message.value);console.log("home beforeUpdate");});onUpdated(() => {console.log("message", message.value);console.log("home updated");});return {message,changeMessage};}};</script><style scoped></style>
keep-alive 的生命周期
keep-alive 可以查看 https://www.yuque.com/yejielin/mypn47/fq2mh6#AVvUm
也就是,被keep-alive标签包裹的组件,我们需要缓存的,额外多了2个生命周期,分别是 活跃(激活中)和 不活跃(隐藏的)
