React单页面应用开发技能Skill:用 React 19 + React Router v7 + Jotai 构建现代单页面应用
- 技能定位:这是一个专注于「客户端 React 单页面应用(SPA)」的开发指导型 AI 技能,覆盖组件、钩子、状态管理、路由、表单与 UI 架构。
- 技术栈明确:以 React 19+、React Router v7、Jotai、Vite、Bun 为核心组合,并主动排除 Next.js、Remix、Redux、create-react-app、webpack 等不适用于纯 SPA 的方案。
- 内容成体系:从项目初始化、路由配置、原子状态、组件模式,到表单验证、可访问性、性能优化与测试,形成一条完整落地链路。
- 自带反模式清单:明确指出「不要做什么」,帮助开发者少踩坑,也方便 AI 输出的代码风格保持统一。
- 适用人群:前端开发者、全栈工程师、需要快速搭建中后台或交互型单页应用的产品技术团队。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
基本信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | React单页面应用开发技能Skill |
| 技能英文名 | react |
| 技能ID | 13486 |
| 技能类型 | 前端开发指导型技能(代码生成 + 架构建议) |
| 核心技术栈 | React 19+、React Router v7、Jotai、Vite、Bun、TypeScript |
它解决什么问题?
React 生态的碎片化是开发者最真实的痛点:路由用哪个库、全局状态用 Redux 还是 Context、构建工具用 Vite 还是 webpack、要不要上 SSR 框架……每个选择都会引发一连串连锁决策。这个技能的价值在于「先定调、再给方案」:它明确锁定「客户端 SPA」这一范式,把技术选型收敛为 React 19 + React Router v7 + Jotai + Vite + Bun 的固定组合,然后围绕这套组合给出可直接使用的代码模式。你不再需要每次从零解释架构背景,AI 输出的代码天然符合这条技术路线。
一键安装的思路与步骤
- 确认安装前提:你需要一个支持「AI 技能 / Skill」加载能力的 AI 编程助手或智能体平台(具体支持的宿主环境、账号权限与客户端版本,以官方说明为准)。
- 找到技能入口:在平台的技能市场、技能库或插件中心中,使用英文名
react或技能ID13486进行检索(具体检索入口与命名规则以官方说明为准)。 - 执行安装/启用:点击安装或启用该技能,将其加入当前会话或项目可用的技能列表。部分平台支持按项目绑定,建议在 React 项目工作区内启用。
- 验证是否生效:在对话中直接输入触发词,例如「用 Jotai 写一个购物车原子」「帮我配置 React Router v7 的受保护路由」「useOptimistic 怎么用」。若返回的内容遵循 React 19 + Jotai + Vite 的技术路线,并主动规避 Redux 与 Next.js,说明技能已正常加载。
- 持续使用:后续在组件设计、表单验证、可访问性改造、性能优化等场景中重复调用,形成稳定的协作节奏。
说明:技能安装的具体命令、平台链接与是否收费,技能详情中未提供,请以官方说明为准。
该技能的主要功能和特点
- React 19 新特性全覆盖:包括用
useActionState处理异步表单状态转换、用useOptimistic实现即时 UI 反馈、用use()读取 Promise 与 Context、以及在组件中直接渲染<title>、<meta>等文档元数据。 - React Router v7 路由体系:提供
createBrowserRouter的路由器搭建方式、基于 loader 的数据预加载、Outlet嵌套布局、useNavigation加载态、useSearchParams查询参数管理,以及ProtectedRoute受保护路由模式。 - Jotai 原子化状态管理:覆盖原始原子、只读/读写派生原子、异步原子、原子族(
atomFamily)、atomWithStorage持久化,以及购物车这类复杂状态的组合式写法,替代传统的全局 Context 与 Redux 方案。 - 可复用的 UI 组件架构:给出设计系统基础组件(按钮变体、尺寸)、组合式卡片组件、多态组件(
as属性切换元素类型)、渲染属性模式(DataLoader)等组件组合范式。 - 表单与验证体系:既覆盖受控表单 + 手写校验,也提供自定义
useForm钩子,统一处理取值、错误、提交中状态与重置。 - 可访问性(a11y)实践:模态框焦点管理与 Tab 键陷阱、可访问表单的
aria-invalid/aria-describedby、加载按钮的aria-busy、跳转到主内容的 SkipLink、键盘可操作下拉菜单、实时播报区域(LiveRegion)。 - 性能优化手段:
memo、useMemo、useCallback、lazy+Suspense代码分割、Vite 手动分包等,从组件层到构建层都有对应策略。 - 错误处理与测试:提供类组件形式的
ErrorBoundary,以及基于 Vitest + Testing Library 的组件测试与 Jotai 原子测试写法。 - 工程化配置:Vite 别名与代理配置、TypeScript 严格模式与路径映射、以
pages / components / hooks / store / layouts划分的目录结构规范。 - 明确的反模式约束:直接列出「不要使用 Next.js、Remix、Redux、用于全局状态的 Context API、create-react-app、webpack、类组件、默认导出」等清单,避免技术路线漂移。
和普通工具的差别在哪? 普通代码补全工具只会根据上下文猜你想要什么,容易在不同项目间混用 SSR 与 SPA 的写法;而这个技能自带明确的技术边界与风格约束,输出结果在同一套架构语言里,团队协作时一致性更高。
如何使用该技能?
以下是结合技能内容整理的分步骤使用指南,可直接参考。
第 1 步:初始化项目
使用 Bun 与 Vite 创建 TypeScript 版 React 应用:
bun create vite my-app --template react-ts
cd my-app
bun install
第 2 步:安装路由与状态管理依赖
bun add react-router jotai
bun add -D @types/react @types/react-dom
bun run dev
第 3 步:配置构建与路径别名
在 vite.config.ts 中配置 @、@components、@hooks、@store、@utils 等别名,开启 React Refresh 快速刷新,并在 build.rollupOptions.output.manualChunks 中把 react、react-dom、react-router、jotai 拆成独立分包。
第 4 步:配置 TypeScript 严格模式
在 tsconfig.json 中启用 strict、noUnusedLocals、noUncheckedIndexedAccess,并配置与 Vite 一致的 paths 映射。
第 5 步:搭建路由骨架
在 src/main.tsx 中用 createBrowserRouter 定义路由树,挂载 RootLayout、ErrorPage、NotFoundPage,并为列表页与详情页配置 loader 做数据预加载。
第 6 步:定义 Jotai 原子
在 src/store/ 下按业务拆分原子文件,例如:
auth.ts:userAtom(atomWithStorage持久化)、isAuthenticatedAtom(派生)、loginAtom/logoutAtom(写操作)。cart.ts:cartItemsAtom、cartCountAtom、cartTotalAtom,以及addToCartAtom、removeFromCartAtom、clearCartAtom。
第 7 步:按对话方式调用技能
下面是几个可以直接复制给 AI 助手的输入示例,以及预期的输出形态:
| 输入示例 | 预期输出 |
|---|---|
| 「用 React 19 的 useActionState 写一个带加载态的更新资料表单」 | 返回含 formAction、isPending 禁用逻辑与成功/错误提示的完整组件 |
| 「帮我写一个购物车 Jotai 原子,要持久化并派生总价」 | 返回 atomWithStorage 基础原子、派生总价原子、增删清空操作原子 |
| 「React Router v7 怎么给 /dashboard 加登录保护」 | 返回 ProtectedRoute 组件 + 路由嵌套配置示例 |
| 「这个模态框怎么做键盘焦点管理」 | 返回带 Tab 循环、Esc 关闭、焦点还原与 aria-modal 的实现 |
第 8 步:补充表单、可访问性与性能细节
在实现具体页面时,继续追问表单校验、aria-* 属性、lazy 懒加载、ErrorBoundary 包裹等细节,让技能逐步补齐工程完整度。
第 9 步:编写测试并验证
使用 Vitest + Testing Library 写组件测试,用 renderHook + act 验证 Jotai 原子的增减逻辑,运行 bun run test 查看结果。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| react(React单页面应用开发技能,技能ID 13486) | 专属客户端 SPA 的 React 开发指导技能 | React 19 特性、React Router v7、Jotai、Vite/Bun 工程化、a11y、性能与测试 | 低,安装后在对话中触发即可使用(以官方说明为准) | 中后台系统、交互型单页应用、组件库建设 | 优势:技术路线收敛、反模式明确、代码风格统一;不足:不覆盖 SSR 与全栈场景 |
| Next.js | React 全栈框架 | 服务端渲染、App Router、服务器组件、API 路由 | 中,需要理解 RSC 与客户端/服务端边界 | SEO 敏感站点、内容型站点、全栈应用 | 优势:生态成熟、首屏与 SEO 友好;不足:概念多、心智负担重,纯 SPA 场景下属于过度设计 |
| Remix | 全栈 Web 框架 | 嵌套路由、loader/action 数据流、渐进增强 | 中高,需要熟悉服务端约定 | 表单密集的服务端渲染应用 | 优势:数据加载与提交模型优雅;不足:与本技能的纯客户端 SPA 定位不同,学习成本更高 |
| Create React App | 传统 React 脚手架 | 零配置启动、内置 webpack | 低 | 教学演示、历史项目 | 优势:上手快;不足:已不再活跃维护,构建速度慢,无法满足现代工程化需求 |
在全局状态这一细分维度上,技能的态度也很鲜明:新项目直接用 Jotai,而不是 Redux Toolkit。Jotai 以原子为最小单位,天然规避了「新建一个全局 store 就要写一堆样板代码」的问题;Context API 则被限定在主题这类组件级状态中使用。
该技能的典型应用场景与实际体验情况
场景一:中后台管理系统的前端搭建
角色是前端工程师,痛点在于「菜单、权限、路由、状态」四件事每次都要重搭一遍。使用技能时,可以先让它输出 createBrowserRouter 的嵌套路由骨架,再补上 ProtectedRoute 与基于 userAtom 的登录态判断,最后用 Jotai 管理用户的筛选条件与分页参数。实际体验是:路由与状态两块的产出可以直接落地,useNavigation 的加载条也让交互体验更完整。需要注意的是,技能明确不做 SSR,若后台需要强 SEO 或服务端渲染,应另选方案。
场景二:电商购物车与待办清单等列表型交互
痛点是「点了按钮要等接口返回,UI 才更新」,体验卡顿。技能中的 useOptimistic 模式可以让新条目先出现在列表里,接口失败再回滚;配合 atomWithStorage,购物车数据自动持久化到 localStorage,刷新页面不丢失。实际体验是:这类高频交互页面的代码量明显减少,派生原子(总数、总价)不需要手动同步。注意事项是不可变更新——items.push() 这类直接改数组的写法会导致 React 检测不到变化,技能的反模式章节对此有专门提醒。
场景三:表单密集型企业应用
角色是业务系统开发者,痛点是校验逻辑分散、错误提示不友好、读屏软件无法识别错误。使用技能时可以要求它同时给出校验规则、aria-invalid、aria-describedby 与 role="alert" 提示,以及提交中的 isSubmitting 禁用态。实际体验是:可访问性部分开箱即用,省去了大量查规范的时间;注意事项是错误文案要与后端返回对齐,避免前端提示与接口信息冲突。
场景四:团队组件库与设计系统沉淀
痛点是每个页面各写各的按钮和卡片,风格不统一。技能提供了 cva 变体风格的 Button、forwardRef 组合式 Card、支持 as 的多态 Text 组件,以及复合组件模式的 Tabs。实际体验是:这些模式可以作为团队组件库的起步模板,命名导出、displayName、forwardRef 等细节也符合工程规范。注意事项是样式方案(如 Tailwind 类名)需要按团队实际技术栈替换。
整体上手难度:对已有 React 基础的开发者属于低门槛,几乎可以边聊边写;对完全新手而言,需要先理解组件、钩子与单向数据流,再使用效果更好。
该技能能为用户带来的价值
- 技术选型时间归零:路由、状态、构建、包管理四大决策被一次性收敛,省去团队反复论证与踩坑的成本。
- 代码一致性显著提升:所有输出都遵循同一套目录结构、命名导出与不可变更新规范,多人协作时 Review 成本下降。
- 少走弯路:反模式章节直接标注了「不要用 Redux、不要用 CRA、不要用 webpack、不要用类组件」等红线,避免项目中途重构。
- 质量维度前置:可访问性、错误边界、性能优化与测试不是事后补丁,而是在写代码时就同步生成,长期可维护性更好。
- 降低门槛:React 19 的新 API(
useActionState、useOptimistic、use())对很多人仍陌生,技能提供了可直接套用的范式,学习曲线被拉平。 - 可量化的收益方向:项目初始化与基础架构搭建从「按天计」压缩到「按小时计」;重复性的表单、路由、状态样板代码大幅减少;无障碍改造从专项任务变成默认产出。
常见问题 FAQ
Q1:这个技能怎么安装?装完怎么确认生效?
在支持 AI 技能的平台的技能市场或插件中心中,用英文名 react 或技能ID 13486 检索并安装启用即可,具体入口与权限要求以官方说明为准。验证方式很简单:输入「用 Jotai 写一个计数器原子」或「React Router v7 怎么配置 loader」,如果返回的是 React 19 + Jotai + Vite 路线且主动回避 Redux,说明已生效。
Q2:这个技能收费吗?
技能详情中未包含定价信息,是否免费、是否需要订阅平台会员,均以官方说明为准。建议在安装前先查看技能页面的计费说明。
Q3:它和直接用 Next.js 有什么区别?我该选哪个?
两者定位不同。本技能专注于客户端单页面应用,不做服务端渲染;Next.js 面向 SSR/全栈场景,自带服务器组件与 API 路由。判断标准是:如果应用不需要搜索引擎抓取页面内容、也不需要服务端渲染首屏,选本技能的 SPA 路线更轻;如果做内容站、营销站或需要强 SEO,则应选 Next.js。
Q4:为什么技能里明确禁止用 Redux 和 Context 做全局状态?
因为这套技术路线选择了 Jotai。Jotai 以原子为单位,按需订阅、按需渲染,样板代码远少于 Redux;而 Context 被限定在主题这类组件级状态,用它承载全局业务状态容易引发大范围重渲染。技能中也留了例外条款:已经在用 Redux 的存量项目不必强行迁移。
Q5:适合谁用?完全的新手能用吗?
适合已有 React 基础的前端开发者、需要快速搭建中后台或交互型单页应用的团队,以及想系统了解 React 19 新特性与可访问性实践的人。完全零基础的新手也能用,但建议先掌握 JSX、组件与基础钩子,否则容易「代码能跑但不知道为什么」。