用途:为 FMC TanStack Start 应用提供 React 19 + TypeScript 的类型与 useEffect 编写规范,覆盖代理常出错的类型模式和副作用纪律。路由与服务端 I/O 属于同级技能。
主要能力:类型化 props/children/refs/事件处理;泛型可复用组件(Table<T>、可辨识联合);React 19 API 类型(use()、ref as prop);useEffect、useEffectEvent、清理与派生状态的编写与审查。
必要用法:目标 React 19.x,新代码不用 forwardRef/useFormState;启用 React Compiler 自动记忆化,默认不加 useMemo/useCallback/memo,仅在性能分析或 lint 要求时添加;Lint 使用 Oxlint react 插件,开启原生 Compiler 规则及 'react/unsupported-syntax': 'error'。扩展原生元素用 React.ComponentPropsWithoutRef;子节点用 React.ReactNode;事件用具体 React.*Event<HTMLElement>;useState 推断失败时显式标注;变体 props 用可辨识联合;React 19 优先 ref as prop。数据获取用路由 loader 加 React Query,而非 useEffect fetch;服务端 I/O 见 tanstack-start-conventions,路由见 tanstack-router-conventions。
useEffect 限制:Effect 是与外部系统同步的逃生舱,无外部系统时通常不应使用。建议每个 useEffect 使用具名函数表达式;清理非平凡时用具名清理函数。派生值在渲染中计算,重置状态用 key prop,用户事件响应走事件处理器,可提取非响应逻辑用 useEffectEvent(只能从 Effect 调用,依赖数组省略)。Strict Mode 下 Effect 双次运行以暴露缺失清理。
适用场景:components/ 下组件的 TypeScript 或 Effect 审查、泛型组件、事件类型、React 19 类型。限制:不含路由 loader、createServerFn、SSR、Zustand。缺失信息暂未提供。