https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

hooks模拟class生命周期

  1. React.useEffect(() => {
  2. // componentDidMount
  3. return () => {
  4. // componentWillUnMount
  5. }
  6. }, [])
  7. React.useEffect(() => {
  8. // componentDidMount
  9. // componentDidUpdate
  10. // 都会执行,可以用useRef加一个判断,只在update时执行
  11. return () => {
  12. // componentWillUnMount
  13. }
  14. })

react为什么要废除三个will生命周期

react16从原来的同步更新变成了异步可中断的更新,当我们在调和过程中如果遇到优先级更高的任务,当前任务就会被中断,等待优先级更高的执行完,才会接着执行刚才的任务,所以可能会执行多次

当协调过程中classComponent报错,会被标记为incompleteClassComponent(不完整的classComponent),再次协调时,重新被标记为classComponent,再走一遍挂载生命周期。

IncompleteClassComponent 组件是怎么形成的

当协调过程中classComponent报错