React Hook Review 用于依据编码原则和使用模式审查 React Hook,并按严重程度报告发现的问题。
用途:对 Hook 代码做结构化评审,覆盖编码原则清单和使用模式清单两部分。
编码原则(必需项):返回值统一用对象(C1);SSR 安全初始化用 useState(FIXED) + useEffect(sync),初始化器内不使用浏览器 API(C2);带副作用的 useEffect 必须返回清理函数(C3);禁用 any,改用泛型 <T>(C4);使用命名导出而非默认导出(C5);严格布尔判断,空值用 == null,区分用 !== undefined(C6);Hook 参数使用对象(C7);公共 API 写含 @description、@param、@returns、@example 四个标签的 JSDoc(C9);性能上对每秒超过 30 次的事件做 16ms 节流、去重未变化值、非紧急更新用 startTransition(C10);零运行时依赖,仅用 peerDependencies(C12);外部依赖以参数注入而非在 Hook 内直接导入(C13)。
推荐项:守卫子句(C8)、function 声明配合箭头内联回调(C11)、命名 useEffect(C14),这些属风格权衡,无功能影响。
使用模式清单涵盖状态设计、Effect 用法与记忆化。状态设计:派生而非同步(U1)、不镜像 props(U2)、非渲染值用 useRef(U3)、用可辨识联合替代布尔组合(U5)、存 ID 而非对象(U6)、归组总是同时变化的状态(U7)。Effect:仅用于同步外部系统(U8)、避免 effect 链(U9)、用 key 重置(U10)、依赖放进 effect 内(U11)、浏览器 API 与外部存储订阅用 useSyncExternalStore(U12)、在事件处理器中通知父级(U13)、异步 effect 做清理(U14)。记忆化:useMemo 仅当耗时≥1ms(U15)、useCallback 配合 memo() 才有效(U16)。Hook 设计:抽取逻辑而非生命周期(U17)。
审查启发式:将 U1-U17 标记为行为或可维护性问题;C1、C7 视为 API 一致性,除非仓库视为硬性要求;除非影响调试质量,降低 C14 严重度;遇到镜像 props、链式 effect 或生命周期包装时说明运行时后果。
输出格式为:Great Work、Required Changes(含问题描述、当前代码、建议代码与原因)、Suggestions、Next Steps(修复、运行测试、提交)。限制:资料未提供具体安装方式、运行命令、平台支持与收费信息。