react与vue的生命周期(新版)
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这个单词的。
