语法:useEffect(callback,array)
空数组的情况下会执行componentDidMount
第一种情况:
第二个参数是array
,如果是个空数组的话,代表不希望检测任一个变量值的改变
只要数组不为空就相当于写了componentDidUpadate
useEffect(() => { console.log(123) },[])
如果想要单独检测某个值得改变,可以单独添加
useEffect(() => { console.log(123) },[num1])
第二种情况:
当不写第二个参数时,useEffect
的callback
同时代表了componentDidMount
和 componentDidUpdate
如果想要检测整个页面所有的变量变化,那么当于不写数组
useEffect(() => { console.log(123) })
卸载阶段
componentWillUnMount
当useEffect
的callback
有return
一个函数时,代表检测componentWillUNmount
卸载阶段
import React, { useState,useEffect } from 'react'
export default function App() {
const [num, setNum] = useState(0)
const [num1, setNum1] = useState(0)
useEffect(() => {
return () => {
console.log('卸载了')
}
},[])
return (
<div>
<h2>数字1:{num}</h2>
<button onClick={() => { setNum(num+1)}}></button>
<h2>数字2:{num1}</h2>
<button onClick={() => { setNum1(num1+1)}}></button>
</div>
)
}