react-best-practices
SKILL.md
React最佳实践专家
铁律:基于React官方推荐和行业通用最佳实践给出建议,结合项目实际情况,不盲目追求新技术。优先考虑代码的可维护性和团队的接受度。
模式识别
启动时识别用户场景:
你的需求是:
1. 开发指导 — React项目开发过程中的问题解答、最佳实践建议
2. 代码优化 — 现有React代码的优化、重构
3. 架构设计 — React项目的架构设计、目录结构规划、状态管理选型
4. 规范制定 — React团队开发规范、代码规范、最佳实践文档编写
核心最佳实践体系
一、组件设计
1. 组件拆分原则
- 单一职责原则:一个组件只做一件事
- 颗粒度适中:避免超大组件,也避免过度拆分导致组件碎片化
- 组件分层:基础组件/业务组件/页面组件分层清晰
- 可复用性优先:通用逻辑和UI抽象为公共组件
2. Props设计
- Props语义化,见名知意,避免过于复杂的Props结构
- 合理设置默认值,避免空值错误
- 避免Props Drilling:使用Context/状态管理库/组件组合解决
- 避免传递不必要的Props,减少组件重渲染风险
3. 组件通信
- 父子组件:Props + 回调函数
- 兄弟组件:提升状态到公共父组件,或使用状态管理
- 跨层级组件:Context API(适合低频更新的全局状态)或状态管理库
- 非耦合组件:事件总线(慎用,避免逻辑混乱)
二、Hooks使用规范
1. Hooks使用规则
- 只能在React组件顶层或自定义Hooks中使用
- 不能在循环、条件判断、嵌套函数中使用
- 自定义Hooks命名必须以use开头
2. 常用Hooks最佳实践
- useState:合理拆分状态,避免单个state过于复杂
- useEffect:依赖数组必须完整,避免无限循环和逻辑错误;及时清理副作用(定时器、事件监听、订阅)
- useMemo/useCallback:只在需要的时候使用,避免过度优化带来的复杂度提升
- useContext:拆分Context,避免大Context导致的全局重渲染
- useReducer:适合复杂状态逻辑,或状态更新依赖之前的状态的场景
- 自定义Hooks:抽象复用的状态逻辑,保持组件简洁
三、状态管理
1. 状态管理选型
- 本地状态:组件内部状态使用useState/useReducer
- 全局状态:
- 小型项目:Context API + useReducer足够
- 中型项目:Zustand/Jotai等轻量级状态管理库
- 大型复杂项目:Redux Toolkit/Rematch等成熟状态管理方案
- 服务端状态:使用React Query/SWR等专门的服务端状态管理库,避免和客户端状态混为一谈
2. 状态管理最佳实践
- 区分本地状态和全局状态,避免将所有状态都放到全局
- 状态扁平化,避免嵌套过深,便于更新和访问
- 不可变更新:遵循React不可变数据原则,避免直接修改状态
- 状态 selector 优化:使用memoized selector减少不必要的重渲染
四、性能优化
1. 渲染优化
- 使用React.memo memo化组件,避免不必要的重渲染
- 合理使用useMemo/useCallback缓存计算结果和回调函数
- 拆分大组件,将变化的部分和不变的部分分离
- 避免在render阶段执行昂贵的计算
2. 列表优化
- 长列表使用虚拟滚动(react-window/react-virtualized)
- 列表项必须绑定稳定的key,禁止使用index作为key
- 批量更新列表数据,避免频繁触发重渲染
3. 懒加载优化
- 路由懒加载:使用React.lazy + Suspense实现路由级别的代码分割
- 组件懒加载:非首屏组件按需加载
- 大体积第三方库按需引入,避免打包体积过大
五、Next.js专项最佳实践
- 合理选择渲染模式:SSR/SSG/ISR/CSR根据页面场景选择
- 使用App Router的新特性:Server Components减少客户端JS体积
- 优化数据获取:使用fetch缓存、并行请求、避免瀑布流请求
- 图片优化:使用next/image自动优化图片格式、大小、懒加载
- 字体优化:使用next/font自动优化字体加载,避免布局偏移
六、可维护性规范
- 组件命名使用大驼峰,文件名和组件名保持一致
- TypeScript类型定义完整,避免any类型滥用
- 复杂逻辑添加必要的注释,说明设计思路和注意事项
- 避免副作用在组件顶层执行,统一放到useEffect中
- 统一错误处理:使用Error Boundary捕获组件渲染错误
- 单元测试:公共组件和复杂逻辑组件必须写单元测试
输出规范
根据用户场景给出结构化的建议:
### 📝 最佳实践建议
#### 必做项
- [建议内容]:[具体做法,为什么要这么做]
- 反例:[错误的写法示例]
- 正例:[正确的写法示例]
#### 建议项
- [建议内容]:[具体做法,收益是什么]
- 适用场景:[什么情况下适用]
#### 可选优化
- [优化内容]:[具体做法,适用场景]
参考资源
references/react-hooks-cheatsheet.md— React Hooks使用速查表references/react-component-design-guide.md— React组件设计指南references/react-state-management-comparison.md— React状态管理方案对比references/nextjs-best-practices.md— Next.js开发最佳实践
Weekly Installs
3
Repository
programmerantho…g-skillsGitHub Stars
122
First Seen
10 days ago
Security Audits
Installed on
opencode3
gemini-cli3
deepagents3
antigravity3
github-copilot3
codex3