react-hooks

  • createContext API 可以创建一个 context,你可以将其提供给子组件,通常会与 useContext 一起配合使用。
  • forwardRef 允许组件将 DOM 节点作为 ref 暴露给父组件。
  • lazy 允许你延迟加载组件,直到该组件需要第一次被渲染。
  • memo 允许你在 props 没有变化的情况下跳过组件的重渲染。通常 useMemo 与 useCallback 会一起配合使用。
  • startTransition 允许你可以标记一个状态更新是不紧急的。类似于 useTransition。
  • act 允许你在测试中包装渲染和交互,以确保在断言之前已完成更新。

State Hook

useState

  • 使用 useState 声明可以直接更新的状态变量。

Context Hook

useContext -帮助组件 从祖先组件接收信息,而无需将其作为 props 传递。

1
const theme = useContext(ThemeContext)

Ref Hook

useRef
ref 允许组件 保存一些不用于渲染的信息,比如 DOM 节点或 timeout ID。与状态不同,更新 ref 不会重新渲染组件。ref 是从 React 范例中的“脱围机制”。当需要与非 React 系统如浏览器内置 API 一同工作时,ref 将会非常有用。

Effect Hook

useEffect
useEffect 有两个很少使用的变换形式,它们在执行时机有所不同:

  • useLayoutEffect 在浏览器重新绘制屏幕前执行,可以在此处测量布局。
  • useInsertionEffect 在 React 对 DOM 进行更改之前触发,库可以在此处插入动态 CSS。

性能 Hook

  • 使用 useMemo 缓存计算代价昂贵的计算结果。
  • 使用 useCallback 将函数传递给优化组件之前缓存函数定义。
  • useTransition 允许将状态转换标记为非阻塞,并允许其他更新中断它。
1
const [isPending, startTransition] = useTransition()
  • useDeferredValue 允许延迟更新 UI 的非关键部分,以让其他部分先更新。