1. 基础必备(最常用)
这三个是 React 开发的顶梁柱,几乎每个组件都会用到。
useState(状态管家):让函数组件拥有“记忆”。用于保存和更新组件内部的数据(如:表单输入、开关状态)。useEffect(副作用捕获器):处理组件“外部”的事物。比如:调接口请求数据、手动操作 DOM、设置定时器。useContext(跨层级传声筒):解决“逐层传递 props”的麻烦。让深层的子组件直接拿到祖先组件共享的数据(如:主题颜色、用户信息)。
2. 性能优化(缓存双雄)
这两个 Hook 都是为了减少不必要的重复计算或渲染,核心逻辑是:“如果依赖项没变,就用上次存好的。”
useMemo(存结果):缓存复杂的计算结果。类似于“昂贵的公式结果先记在小本本上”,下次直接看结果。useCallback(存函数):缓存函数定义。防止父组件重绘时,子组件因为接收到“新的”函数实例而跟着瞎重绘。
3. 操作引用(直达工具)
useRef(固定指针/不粘纸):- 访问 DOM 元素(比如让输入框自动聚焦)。
- 存储一个在渲染之间保持不变,但修改它不会触发重新渲染的变量。
useReducer(状态管理进阶):useState的加强版。当逻辑太复杂(比如一个动作要改好几个状态)时,用这种“发送指令 -> 处理指令”的模式更清晰。
4. 进阶/低频(特定场景)
useLayoutEffect:用法和useEffect一样,但在浏览器绘制之前执行。通常用于解决闪烁问题。useImperativeHandle:配合forwardRef使用,限制子组件暴露给父组件的权限(只给父组件想让它看的)。useId:生成跨服务端和客户端一致的唯一 ID,主要用于辅助功能(Accessibility)。
💡 记忆口诀
State 存数据,Effect 跑副作用;
Memo 省计算,Callback 存函数;
Ref 抓元素,Context 跨级传。