useEffect

10 小时前
/ ,
1

useEffect

传入一个回调函数,此函数为执行React系统之外的一些副作用,提供一个依赖列表, 当依赖列表发生变化时,执行清理函数(即return)并重新执行匿名函数

副作用

  1. ajax 请求
  2. 计时器
  3. 其他异步操作
  4. 更改真实 DOM 对象
  5. 本地存储
  6. 其他会对外部产生影响的操作

机制

  1. 副作用函数中,如果使用了函数上下文中的变量,则由于闭包的影响,会导致副作用函数中变量不会实时变化。
  2. 回调函数 总是在 浏览器把 DOM 更新完毕以后 进行异步执行;清理函数则在 组件即将卸载或重渲染之前 执行。
  3. 如果可以在渲染期间计算某些内容,则不需要使用 Effect,因为 Effect会触发多余的重渲染。
  4. 如无必要,不需要在 Effect 中操作昂贵的计算,使用 useMemo 而不是 useEffect。
  5. 想要重置整个组件树的 state,请为该组件传入不同的 key,而不是在 Effect 重置所有 state。
  6. 每个 Effect 应该代表一个独立的同步过程。 ## useEffect 与 useLayoutEffect区别 核心区别就是在渲染流程中的执行时机不同
    渲染流程:
    JS 计算(React 代码执行) → 生成虚拟 DOM → 绘制到真实 DOM(浏览器渲染) → 浏览器绘制完成(用户看到新界面)
  7. useEffect:在浏览器绘制完成后异步执行。
  8. useLayoutEffect:在真实 DOM 更新完成后,浏览器绘制之前同步执行。它会阻塞浏览器重新绘制屏幕,直到执行完成,因此过度使用会导致明显的程序变慢

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...