React useState 初始值只生效一次
问题现象
问题原因
useState(initialValue) 的初始值只在组件首次挂载时使用一次。
- 首次渲染:
data为undefined→firstId = ""→useState("") - 数据加载完成,组件重新渲染
firstId现在有值了- 但
useState不会用新值更新状态,初始值被忽略
解决方案
方案一:useEffect 同步(简单但多一次渲染)
方案二:派生值模式 ✅ 推荐
方案三:组件 key 重置(简单粗暴)
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| useEffect | 直观易懂 | 多一次渲染,可能覆盖用户选择 |
| 派生值 | 无额外渲染,逻辑清晰 | 需要区分”用户值”和”默认值” |
| key 重置 | 最简单 | 会重置组件所有状态 |

