外观
外观
耶温
769字约3分钟
2024-06-21
每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。
Vue2生命周期函数,分为创建、挂载、更新、销毁几个阶段。其中不包括router
等的全局路由守卫函数。
beforeCreate(){}
created(){}
- 可以获取到data对象,可以用来请求接口获取对象。beforeMount(){}
mounted(){}
- 可以获取到DOM对象,一般用来获取元素操作。beforeUpdate(){}
updated(){}
beforeDestroy(){}
- 可以用来清楚定时器等destroyed(){}
<script>
export default {
name: 'App',
data() { // 数据存储
return {}
},
methods: { // 储存方法
},
// 以下为Vue2生命周期钩子函数
beforeCreate() { // 创建前
},
created() { //创建后
},
beforeMount() { // 挂载前
},
mounted() { // 挂载后
},
beforeUpdate() { // 更新前
},
updated() { // 更新后
},
beforeDestroy() { //销毁前
},
destroyed() { //销毁后
},
}
</script>
Vue3会在合适的时机会帮我们调用钩子函数中指定的回调函数。常用的生命周期钩子函数有onMounted
(挂载完成,可以获取到DOM)、onUpdated
(组件更新完成)、onBeforeUnmount
(卸载之前)。
setup()
,不再区分beforeCreate
和created
。一般在setup()
函数中设置数据方法和调用接口获取数据。onBeforeMount(()=>{})
- Vue3会在挂载前会帮我们调用onBeforeMount
指定的回调函数。下方其他生命周期钩子函数同理。onMounted(()=>{})
- 可以获取到DOM对象,一般用来获取元素操作。onBeforeUpdate(()=>{})
- 数据更新之前onUpdated(()=>{})
- 数据更新之后onBeforeUnmount(()=>{})
- 可以用来清楚定时器等onUnmounted(()=>{})
<script setup lang="ts" name="Son">
import {onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onUnmounted, onBeforeUnmount} from 'vue'
console.log('创建')
onBeforeMount(() => {
console.log('挂载前')
})
onMounted(() => {
console.log('挂载完毕,挂载后')
})
onBeforeUpdate(() => {
console.log('更新前')
})
onUpdated(() => {
console.log('更新完毕,更新后')
})
onBeforeUnmount(() => {
console.log('卸载前')
})
onUnmounted(() => {
console.log('卸载完毕,卸载后')
})
</script>
用父组件father
和子组件son
来代替父子组件,那么总体的生命周期顺序为:
① ====> 父组件father
:setup()
-创建 ====>
② ====> 父组件father
:onBeforeMount
-挂载前 ====>
③ ====> 子组件son
:setup()
-创建 ====>
④ ====> 子组件son
:onBeforeMount
-挂载前 ====>
(如果有孙子组件,孙子组建的 创建 挂载前 挂载后 会在这里执行)
⑤ ====> 子组件son
:onMounted
-挂载后 ====>
⑥ ====> 父组件father
:onMounted
-挂载后 ====> (结束)
可以从上述顺序中看到,子组件挂载完成之后,才会挂载父组件。