/**useEffect(()=>{return callback;},[参数])
* 回调函数:在组件销毁时执行
* 第二个参数:是一个数组,不传值时默认每次都更新。
* 传值时,表示数组每一项都不变时,才会阻止每次执行
* 只是作浅层比较,如果是内部属性,会导致失误
* 副作用:绑定事件,网络请求,访问DOM
* 副作用时机:useEffect含概componentDidMount(Mount之后),componentDidUpdate(Update后),componentWillUnmount(Unmount前)
*
* 使用useEffect()时,有一点需要注意。如果有多个副效应,应该调用多个useEffect(),而不应该合并写在一起。
*/
import React,{useState,useEffect} from 'react';
export default function App(){
const [count,setCount] = useState(0);
useEffect(()=>{
window.addEventListener('resize',handleResize);
return () => window.removeEventListener('resize',handleResize);
},[count])//看这一行!!! useEffect有第二个数组参数!!!而不是[],否则更新有问题
const handleResize = () =>{
console.log(`count is ${count}`)
}
return(
<div className="app">
<button onClick={()=>setCount(count + 1)}>+</button>
<h1>{count}</h1>
</div>
)
}