1.useEffect依赖最好不要是引用类型。把它们移动到组件外或者effect内。
因为hooks每次重新执行都会创建一个新的引用类型。会使Effect比需要的更频繁地重新同步,甚至导致死循环。
2.useState初始化只会执行一次。之后的re-render都是读取state的值。如果state是根据props来创建的。当props改变时,并不会自动修改state的值。
3.state是一个快照。在一次渲染中state的值不会改变。无论是在事件处理函数中还是effect中,或者是定时器中。设置state只会为下一渲染变更state的值。
例如:
const [count, setCount] = useState(0)
setCount(count+ 1)
setTimeout(() => {
console.log(count) // 0
}, 1000)