React Router
React Router 是模式特定的。在更改应用之前,请先识别模式,加载匹配的参考文档,然后阅读已安装包版本对应的文档。
识别模式
请勿将框架/数据模式下的模式应用于声明式应用,除非你是有意迁移模式。
框架模式
当看到以下内容时,使用框架模式指导:
- 依赖中包含
@react-router/dev react-router.config.tsapp/routes.tsapp/entry.server.tsx和/或app/entry.client.tsx文件app/routes/下的路由模块- 路由导出如
loader、action、clientLoader、clientAction、ErrorBoundary、meta、links或headers - 从
./+types/...导入 - 来自
@react-router/dev/vite的 React Router Vite 插件
框架示例通常使用默认的 app/ 目录,但在假设确切路径之前,请检查 react-router.config.ts 中的自定义 appDirectory。
然后阅读 references/framework-mode.md。
数据模式
当看到以下内容时,使用数据模式指导:
createBrowserRouter、createHashRouter、createMemoryRouter或createStaticRouter<RouterProvider router={router}>- 具有
path、children、loader、action、Component、ErrorBoundary或lazy等属性的路由对象 - 不带框架 Vite 插件的数据 API
然后阅读 references/data-mode.md。
声明式模式
当看到以下内容时,使用声明式模式指导:
<BrowserRouter>、<HashRouter>或<MemoryRouter><Routes>和<Route>JSX 路由配置- 通过
element={<Component />}传递的路由组件 - 无数据路由器、无路由模块约定、无加载器/操作
然后阅读 references/declarative-mode.md。
RSC 框架模式和 RSC 数据模式
React 服务器组件支持尚不稳定,并且存在于框架和数据两种变体中。当看到以下内容时,使用 RSC 指导:
unstable_reactRouterRSC@vitejs/plugin-rscunstable_RSCRouteConfig- RSC 入口文件,例如
entry.rsc ServerComponent、ServerErrorBoundary、ServerLayout或ServerHydrateFallback- React 指令或边界包,例如
"use client"、"server-only"或"client-only"
对于 RSC 框架模式,请同时阅读 references/framework-mode.md 和 references/rsc.md。
对于 RSC 数据模式,请同时阅读 references/data-mode.md 和 references/rsc.md。
将已安装的文档作为唯一真实来源
React Router 在包中附带 markdown 文档,以便指导与已安装版本相匹配:
node_modules/react-router/docs/
关键文档路径:
node_modules/react-router/docs/index.md
node_modules/react-router/docs/start/
node_modules/react-router/docs/how-to/
node_modules/react-router/docs/explanation/
node_modules/react-router/docs/upgrading/
当此技能引用 react-router/docs/... 时,请阅读 node_modules/react-router/docs/ 下对应的文件。如果已安装的版本不包含本地文档,则在 React Router 仓库内工作时使用仓库的 docs/ 目录;在消费应用中,则回退到版本匹配的网站文档。
大多数文档在顶部附近包含一个模式标记:
[MODES: framework, data, declarative]
仅当文档的模式标记与应用模式匹配时才应用该文档。如果任务跨越多个模式,优先选择与当前应用匹配的部分或文件。
RSC 主要在以下文件中记录:
node_modules/react-router/docs/how-to/react-server-components.md
技能参考文档
识别模式后,加载相关的参考文档:
| 参考文档 | 使用场景 |
|---|---|
references/framework-mode.md | 框架模式或 RSC 框架模式的基础行为 |
references/data-mode.md | 数据模式或 RSC 数据模式的基础行为 |
references/declarative-mode.md | 声明式模式 |
references/rsc.md | 任何不稳定的 RSC 应用 |
模式迁移文档索引
如果用户明确要求切换模式,请阅读目标模式的参考文档以及迁移相关的文档:
| 迁移 | 需要阅读的文档 |
|---|---|
| 声明式 → 数据 | react-router/docs/start/modes.md、react-router/docs/start/data/routing.md、react-router/docs/start/data/data-loading.md、react-router/docs/start/data/actions.md |
| 声明式/数据 → 框架 | react-router/docs/start/modes.md、react-router/docs/start/framework/routing.md、react-router/docs/start/framework/route-module.md、react-router/docs/how-to/route-module-type-safety.md |
| 框架 SPA/SSR/预渲染更改 | react-router/docs/start/framework/rendering.md、react-router/docs/how-to/spa.md、react-router/docs/how-to/pre-rendering.md、react-router/docs/start/framework/data-loading.md、react-router/docs/start/framework/actions.md |
| 未来标志/升级 | react-router/docs/upgrading/future.md 以及 react-router/docs/upgrading/ 下的相关文件 |