react-patterns

现代React模式与原则。Hooks应用、组件组合、性能优化、TypeScript最佳实践。

作者

安装

热度:2

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-react-patterns&locale=zh&source=copy

React Patterns - 现代开发模式与最佳实践

技能概述

React Patterns 提供构建生产级 React 应用的完整设计指南,涵盖组件设计原则、Hook 模式、状态管理选择、性能优化策略以及 TypeScript 最佳实践,帮助开发者写出可维护、高性能的 React 代码。

适用场景

  • 新建 React 项目架构设计

  • 为新项目确定组件划分方案、状态管理策略和技术选型,从零开始构建可扩展的 React 应用架构,避免后期重构成本。

  • 现有 React 代码优化重构

  • 识别和消除代码中的反模式,如组件过大、prop drilling、过度使用 useEffect 等,提升代码质量和可维护性。

  • React 团队开发规范制定

  • 为团队建立统一的组件设计标准、Hook 使用规范、错误处理模式和测试原则,确保代码风格一致性和可维护性。

    核心功能

  • 组件设计模式指导

  • 提供四种组件类型(Server、Client、Presentational、Container)的使用指南,明确组件职责划分原则,包括单一职责、Props 下传事件上传、组合优于继承等设计规则,帮助开发者构建清晰可维护的组件结构。

  • Hook 模式与提取策略

  • 定义自定义 Hook 的提取时机和使用规则,涵盖 useLocalStorage、useDebounce、useFetch、useForm 等常见模式,强调 Hooks 顶层调用、顺序一致性和清理副作用的重要性,实现逻辑复用和代码简化。

  • 状态管理决策树

  • 根据应用复杂度提供清晰的状态管理选择路径:简单场景用 useState/useReducer,局部共享用 Context,服务端状态用 React Query/SWR,复杂全局状态用 Zustand/Redux Toolkit,并明确不同范围的状态放置策略。

  • React 19 新特性应用

  • 介绍 useActionState、useOptimistic、use 等新 Hook 的用途,以及 React Compiler 带来的自动记忆化优化,指导开发者利用最新特性减少手动优化代码。

  • 性能优化方法论

  • 提供系统化的性能优化流程:先确认是否真的慢、用 DevTools 分析、定位瓶颈、针对性修复。涵盖虚拟列表、useMemo、useCallback 的正确使用场景,避免过早优化。

  • 错误处理体系

  • 定义错误边界的分层放置策略(应用级、功能级、组件级),以及错误恢复的完整流程:展示降级 UI、记录错误、提供重试选项、保护用户数据。

  • TypeScript 类型模式

  • 提供 Props 类型定义的最佳实践,区分 Interface、Type、Generic 的使用场景,汇总 ReactNode、MouseEventHandler、RefObject 等常用类型,提升类型安全。

  • 测试分层原则

  • 建立单元测试(纯函数和 Hook)、集成测试(组件行为)、E2E 测试(用户流程)的测试金字塔,明确测试优先级:用户可见行为、边界情况、错误状态、可访问性。

    常见问题

    React 组件什么时候应该拆分?

    当组件承担多个职责、代码行数超过 200 行、Props 数量超过 7 个,或者某些逻辑可以在多个组件中复用时,就应该考虑拆分。拆分的原则是单一职责:展示组件只负责 UI 渲染,容器组件负责状态和逻辑。拆分的好处包括更好的可测试性、更清晰的关注点分离以及更高的代码复用性。

    自定义 Hook 在什么情况下需要提取?

    当代码中出现重复的状态逻辑(如多个组件都需要本地存储同步)、复杂的副作用管理(如带防抖的 API 调用),或者需要将组件逻辑与 UI 分离时,就应该提取自定义 Hook。常见的提取场景包括:useLocalStorage(跨组件的存储逻辑)、useDebounce(多个防抖值)、useFetch(重复的数据获取模式)、useForm(复杂的表单状态管理)。自定义 Hook 必须以 "use" 开头,并在组件顶层调用。

    React 状态管理方案应该如何选择?

    根据状态复杂度和共享范围来决策:单一组件内用 useState,父子组件间提升状态,组件子树共享用 Context,简单全局状态用 Context + useReducer,服务端状态用 React Query/SWR,复杂全局状态用 Zustand 或 Redux Toolkit。选择的关键是先用最简单的方案,遇到实际痛点时再升级,避免一开始就引入过重的状态管理库。

    React 性能优化的正确顺序是什么?

    优化必须遵循严格的顺序:首先确认是否真的存在性能问题(用户感知),然后用 React DevTools Profiler 定位瓶颈,最后针对性修复。常见的优化手段包括:大列表虚拟化、昂贵计算用 useMemo、稳定引用用 useCallback。切记不要过早优化,大部分 React 应用不需要手动优化,React 19 的 Compiler 会自动处理大部分记忆化需求。

    React 19 有哪些新的模式和特性?

    React 19 引入了三个重要的新 Hook:useActionState 用于表单提交状态管理,useOptimistic 用于乐观 UI 更新(如点赞、收藏),use 用于在渲染中直接读取资源(简化 Promise 和 Context 读取)。更重要的是 React Compiler,它能自动优化组件,减少手动使用 useMemo 和 useCallback 的需求,让开发者专注于编写纯组件。

    React 组件设计中应该避免哪些反模式?

    常见的反模式包括:深层 prop drilling(应该用 Context)、巨型组件(应该按职责拆分)、滥用 useEffect 处理所有逻辑(优先使用 Server Components)、用数组索引作为 key(应该用稳定的唯一 ID)、过早优化(先 Profile 再优化)、Props 类型用 any(应该用 TypeScript 明确定义)。避免这些反模式能显著提升代码的可维护性和性能。

    React + TypeScript 开发有哪些最佳实践?

    组件 Props 优先使用 Interface 定义,方便扩展;联合类型和复杂类型用 Type;可复用组件使用 Generic。常用类型包括:ReactNode(children)、MouseEventHandler(事件处理)、RefObject(Ref)。避免使用 FC 类型直接定义组件,直接声明函数组件更清晰。为组件 Props 添加明确的注释,特别是布尔类型的 Props。

    React 错误处理应该如何设计?

    建立分层的错误边界体系:应用根级别放置全局错误边界捕获所有未捕获错误,路由或功能级别放置功能级错误边界,特定风险组件周围放置组件级错误边界。错误恢复策略包括:展示友好的降级 UI、记录错误到监控系统、提供重试按钮、尽可能保护用户未保存的数据。错误边界无法捕获事件处理器中的错误,这些需要用 try-catch 处理。