React useId 解决什么 ID 生成问题?
用 useId 生成 SSR 与客户端一致的关联 ID,理解它不适合做列表 key 或业务唯一标识。
参考答案
useId 用于生成组件内部需要关联的 ID,例如 label 与 input、描述文本与控件的 htmlFor/aria-describedby。它能在服务端渲染和客户端 hydration 中保持匹配。
它不是数据库 ID、业务实体 ID,也不适合作为列表 key;列表 key 应来自数据本身。不要把生成的 ID 暴露为跨请求或持久化协议的一部分。
重复使用组件时可以基于一个 ID 拼接多个相关元素,但要保持组件实例之间的隔离。服务端和客户端的组件树结构变化仍可能导致 hydration 问题。