mcpField
R
react-patterns

react-patterns

github.com/majesticlabs-dev开发5048 次安装7 周前更新
代码仓库

关于 react-patterns

为编写现代 React 应用提供模式指导,涵盖组件组合、Hooks、状态管理、性能与无障碍实践,适用于需要实现或审查 React 界面的开发者。

主要功能

  1. 01组件组合模式
  2. 02自定义 Hook 用法
  3. 03状态管理选择
  4. 04性能优化与代码拆分
  5. 05错误处理与无障碍实践

适用场景

  1. 01设计可复用的复合组件
  2. 02为表单和数据请求编写 Hook
  3. 03选择适合界面的状态方案
  4. 04优化大型组件和交互流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill react-patterns

安装后在 Claude Code 中输入/react-patterns确认已加载。

附带文件references/examples.md

详细介绍

React 模式

关于使用 hooks、组件组合、状态管理和并发功能实现现代 React 模式的专家指南。

核心理念

优先事项描述
组件组合使用简单、可复用的部分构建复杂 UI
关注点分离将业务逻辑放在 hooks 中,将展示逻辑放在组件中
明确优于隐式保持数据流和状态管理清晰
性能尽量减少重复渲染,优化高开销计算
无障碍性构建包容且支持键盘导航的界面

模式类别

组件组合模式
模式使用场景示例
复合组件通过共享上下文实现灵活的组件 APIAccordion、Tabs、Menu
渲染属性在组件之间共享逻辑MouseTracker、滚动位置
高阶组件包装组件以添加功能withAuth、withLoading

完整代码示例请参见 references/examples.md。

自定义 Hooks 模式
Hook用途
useApi获取数据并管理加载/错误状态
useForm管理表单状态并进行验证
useDebounce对快速变化的值进行防抖处理
usePrevious访问状态/属性的先前值
useLocalStorage将状态持久化到 localStorage

实现示例请参见 references/examples.md。

状态管理模式
类型适用场景示例
useState简单的 UI 状态开关、表单输入、分页
useReducer复杂的状态逻辑多步骤表单、购物车
Context主题、身份验证、全应用设置用户会话、功能标志
URL 状态可分享/可加入书签的状态筛选器、搜索参数、标签页
服务端状态API 数据(React Query/SWR)用户资料、产品目录
全局存储跨功能协调复杂应用使用 Zustand/Redux

Context + useReducer 模式:最适合需要在多个组件间共享、且包含多个操作的复杂状态。请参见 references/examples.md。

性能优化

何时使用记忆化
工具使用时机
useMemo高开销计算(排序、筛选大型数组)
useCallback传递给记忆化子组件或用于依赖项的函数
memo使用相同属性频繁重新渲染的纯组件
代码拆分策略
级别实现方式
路由级lazy(() => import('./pages/Dashboard'))
组件级图表、编辑器等大型组件
条件级由功能标志控制的功能

始终使用适当的回退内容,将 lazy 组件包装在 <Suspense> 中。

错误处理

策略范围
错误边界组件树错误(类组件)
try/catch异步操作、事件处理程序
React Query onError支持自动重试的 API 错误

错误边界的放置位置:应用级错误边界用于致命错误,功能级错误边界用于优雅降级。

无障碍模式

要求实现方式
焦点管理关闭模态框时将焦点返回到触发元素
键盘导航在交互元素中支持 Tab、Enter、Escape
ARIA 标签用于图标按钮及没有可见标签的表单输入
语义化 HTML适当使用 <nav>、<main>、<button>

无障碍模态框实现请参见 references/examples.md。

最佳实践检查清单

  1. 当逻辑被重复使用或较复杂(超过 20 行)时,提取自定义钩子
  2. 使用复合组件,打造灵活的组件 API
  3. 对耗时的计算以及传递给已记忆化子组件的回调进行记忆化
  4. 对路由和大型组件进行代码拆分
  5. 在适当的层级使用错误边界处理错误
  6. 在模态框和动态内容中管理焦点
  7. 使用语义化 HTML 和 ARIA 标签来确保无障碍访问
  8. 将钩子与组件分开,独立测试
  9. 保持组件精简(少于 200 行)
  10. 将状态放在使用它的位置附近

评论

支持 Markdown