不要类比 class 组件里的生命周期
useEffect(fn, [])
只会执行一次,但是不完全等于componentDidMount
生命周期。如果将这两种一一对比,对 Effect 的使用就很难提升了,踩坑之后的领悟。
useEffect 使用
- 把不依赖 props 和 state 的函数提到你的组件外面
- 把那些仅被 effect 使用的函数放到 effect 里面
- 如果这样做了以后,你的 effect 还是需要用到组件内的函数,包括 props 传进来的函数,则使勇敢 useCallback 包一层