react与vue的生命周期对比,之前学vue和react的时候,对他们两的生命周期总是搞混,这回总结对比一下
react:
# react生命周期函数
# 以下是按顺序排列
constructor(props) { # 组件挂载之前
super(props);
this.state = {}
}
# Mounting 过程
componentWillMount() { # 组件将要挂载
console.log('componentWillUnmount');
}
render() { # 组件正在挂载
console.log('render')
return (
<div>hello world</div>
)
}
componentDidMount() { # 组件挂载完成
console.log('componentDidMount');
}
# Updation 数据更新过程
# state props 优先级为state父组件数据 但到了子组件中间是先执行子props
$ props
# 下面这个生命函数是在组件中的
componentWillReceiveProps() { # 组件中props数据改变时 在子组件渲染之间执行
console.log('componentWillReceiveProps')
}
shouldComponentUpdate() {
console.log('shouldComponentUpdate'); # false的意思是 如果数据没有更新则下面的函数不会执行 提升性能
return false;
}
componentWillUpdate() {
console.log('componentWillUpdate');
}
# render(){}
componentDidUpdate() {
console.log('componentDidUpdate');
}
$ state
shouldComponentUpdate() {
console.log('shouldComponentUpdate'); # false的意思是 如果数据没有更新则下面的函数不会执行 提升性能
return false;
}
componentWillUpdate() {
console.log('componentWillUpdate');
}
# render(){}
componentDidUpdate() {
console.log('componentDidUpdate');
}
# Unmount
componentWillUnount(){
console.log('componentWillUnmount');
}
vue:
<template>
<h2>当前求和为:{
{sum}}</h2>
<button @click="sum++">点我+1</button>
</template>
<script>
import {ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted} from 'vue'
export default {
name: 'Demo',
setup(){
console.log('---setup---')
//数据
let sum = ref(0)
//通过组合式API的形式去使用生命周期钩子
onBeforeMount(()=>{
console.log('---onBeforeMount---')
})
onMounted(()=>{
console.log('---onMounted---')
})
onBeforeUpdate(()=>{
console.log('---onBeforeUpdate---')
})
onUpdated(()=>{
console.log('---onUpdated---')
})
onBeforeUnmount(()=>{
console.log('---onBeforeUnmount---')
})
onUnmounted(()=>{
console.log('---onUnmounted---')
})
//返回一个对象(常用)
return {sum}
},
//通过配置项的形式使用生命周期钩子
//#region
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---')
},
//#endregion
}
</script>
总结:他们两个最大的不同就是react的生命周期几乎都以component开头,而新版vue在setup中以on开头且vue的生命周期没有component这个单词的。