SuperAPI AI 工具集

modern-best-practice-react-components

编程与开发

查看项目

更新于 10-15 09:50

技能介绍

本规范面向使用现代 React(19+)的开发者,目标是在组件编写中贯彻清晰、正确与可维护的最佳实践,同时规避常见陷阱,例如不必要的状态管理和 useEffect 滥用。

用途与适用场景: 适用于 React 19+ 项目的组件开发,尤其是团队希望统一编码风格、提升可读性与降低长期维护成本时。可作为代码评审或编码规范的参考。

组件结构与风格: 优先编写小而专注、职责单一的组件;优先使用具名函数组件而非箭头函数(匿名回调、内联渲染属性和闭包除外);在适用处优先显式返回类型与 props 类型(TypeScript);保持组件扁平可读,避免深层嵌套 JSX;将相关逻辑(事件处理器、派生值、辅助函数)分组在一起。

状态管理: 避免使用 useEffect(),可参考“You Might Not Need An Effect”指南;优先在渲染期间派生值,而不是同步状态;通过 TanStack Query(@tanstack/react-query)获取数据;避免不必要的 useState() 或 useReducer();尽可能从 props 或其他状态派生状态;将状态局部化到尽可能低的组件层级;除非绝对必要,不要用 state 镜像 props;优先使用受控组件,而非同步非受控状态。

渲染与派生: 优先内联或通过辅助函数计算派生值;仅在已证实存在性能问题时才克制地使用 useMemo();避免过早优化;保持渲染逻辑确定性且无副作用。

事件处理: 避免在 JSX 中使用内联事件处理器,优先采用具名处理函数(如 handleClick)并传给 onClick,而不是内联箭头函数;处理函数命名清晰(handleSubmit、handleChange、handleClose);保持处理函数简短,复杂逻辑抽取到辅助函数中。

副作用、数据与 Side Effects: 避免用 effect 处理派生状态、数据转换或可放入事件处理器的基于事件的逻辑;若副作用不可避免,应保持最小化、隔离并充分注释;优先使用框架级或外部抽象(路由、数据库),而非原始 effect。

Props 与组合: 优先组合而非配置;避免过多布尔 props,优先表达性更强的 API;有意使用 children 并记录其预期结构;保持 prop 命名语义化且可预测。

性能与稳定性: 仅在需要时使用稳定引用(而非默认使用);除非绝对必要,避免不必要的记忆化(memo、useCallback);渲染列表时保持 key 稳定且有意义。

总体原则: 代码首先为人而写,其次为编译器;显式优于技巧;以可读性和长期维护为优化目标;若某种模式显得复杂,应重新考虑组件边界。

限制与未提供事项: 资料未提供安装命令、价格或收费方式、平台支持范围、效果承诺、具体代码示例细节等信息,以上均暂未提供。