useEffect的第二个参数很重要,是个数组。里面如果有值(可能有多个值),该值发生变化后,useEffect钩子的函数就会重新执行。如果是空数组,就只会执行一次
- 模拟DidMount
useEffect(()=>{
console.log('模拟DidMount')
},[])
- 模拟DidUpdate【第一次进来也会执行】
useEffect(()=>{
console.log('模拟DidUpdate')
},[count])
- 模拟WillUnMount【return 函数,每次re-render都会被调用】
useEffect(()=>{
const timer = window.setInterval(()=>{
console.log(Date.now())
},1000)
//模拟WillUnMount
return () =>{
window.clearInterval(timer)
}
},[])