React 学习笔记(四): 变量管理 useRef + useMemo + useState
⚛️ React Hook 学习笔记:useRef vs useMemo vs useState
这三个 Hook 都是 React 中的“状态管理 & 性能优化”核心工具。
但它们的用途完全不同 👇
🧩 一、useState —— 管理组件状态(可触发渲染)
1 | |
✅ 特点
- 用于保存“会影响 UI”的状态
- 更新会触发组件重新渲染
- 值在每次渲染中都是独立的
⚠️ 注意
- 每次
setCount都会重新渲染组件。 - 不适合存储不会显示在页面上的数据。
🧠 二、useRef —— 保存引用(不会触发渲染)
1 | |
✅ 特点
- 保存一个可变的引用值,跨渲染周期不变。
- 修改
.current不会触发渲染。 - 常用于:
- 访问 DOM 元素(如上例)
- 保存上一次的值、定时器 ID 等
⚠️ 注意
useRef 是“静态的”,值变化不会更新 UI。
🚀 三、useMemo —— 性能优化(缓存计算结果)
1 | |
✅ 特点
- 缓存“计算结果”,避免每次渲染都重复执行。
- 仅当依赖项
[data]变化时才重新计算。
⚙️ 常见用途
- 计算复杂数据(如排序、过滤)
- 避免子组件重复渲染(搭配
React.memo)
⚠️ 注意
- 不会保存引用或状态,只缓存结果。
- 依赖项一定要写对,否则缓存无效或错误。
🧭 四、三者对比总结
| Hook | 是否触发渲染 | 用途 | 示例场景 |
|---|---|---|---|
useState |
✅ 会 | 管理页面状态 | 按钮计数、表单输入 |
useRef |
❌ 不会 | 保存引用或临时变量 | 获取 DOM、保存 timer |
useMemo |
⚙️ 不会(缓存结果) | 性能优化(避免重复计算) | 过滤、排序、大计算量函数 |
💡 小结
- 👉 想“保存数据并更新界面” →
useState - 👉 想“保存数据但不渲染” →
useRef - 👉 想“缓存计算结果” →
useMemo
React 学习笔记(四): 变量管理 useRef + useMemo + useState
http://example.com/2025/09/20/React-学习笔记-四-变量管理useRef-useMemo-useState/