React Router Best Practices 是一套针对 React Router 应用的性能优化与架构模式规则集,共包含 11 个类别、55 条规则,聚焦于数据加载、actions、表单、流式渲染与路由组织。
用途 该规则集用于在编写 React Router 路由(loaders、actions)、处理表单与变更、实现 Single Fetch 流式渲染、组织路由文件与就近放置查询、设置鉴权模式、添加 SEO/meta 标签时作为参考。
主要能力与规则概览 数据加载(CRITICAL):所有数据获取都在 loader 中完成,禁止在组件中用 useEffect 获取;用 Promise.all 并行获取;API 客户端在同一请求内通过 context 去重;用 useRevalidator 处理轮询、聚焦与重连时的重新验证;用 Route.LoaderArgs 做 TypeScript 类型标注;用 zod 或 invariant 校验 URL 参数;请求取消时通过 request.signal 中止异步工作;将查询放在就近的 queries.server.ts 文件中;通过 middleware 鉴权并在每个 loader/action 中授权。
Middleware 与安全(HIGH):每个请求保持单一 session 实例;用 AsyncLocalStorage 存储 context/request 以支持无参辅助函数;用 batcher 去重请求级 API/DB 调用;添加 request ID 用于日志与关联;用内置 middleware 统一记录请求日志;为响应添加 Server-Timing 测量;为缓存创建每请求单例;通过 Sec-Fetch 头拒绝跨站变更请求;为公开表单添加蜜罐输入;为 API 路由应用 CORS 头;对用户驱动的重定向做安全处理;用 schema 校验 cookie 载荷;从可信代理头提取客户端 IP。
数据传递:用 useRouteLoaderData 仅在 UI 中访问父路由数据;loader 逻辑中如需数据则在各自 loader 中再次获取(API 客户端按请求缓存,不产生额外请求);只有路由组件调用 useLoaderData/useActionData,子组件通过 props 接收数据。
Actions 与表单(CRITICAL):用 zod schema 校验表单数据并支持 i18n 错误消息;返回校验错误而非抛出,重新抛出重定向与未知错误;变更成功后重定向以防重复提交;用 Zod .transform() 在校验时做输入清洗;用 clientAction 在触达服务器前做即时客户端校验。
表单模式(MEDIUM):非导航型变更用 useFetcher,导航型提交用 Form;用 useNavigation 或 fetcher.state 显示加载状态,可配合 useSpinDelay 避免闪烁;提交成功后重置非受控表单输入;校验错误时从 action 返回字段值以回填输入。
客户端函数(MEDIUM):用 clientLoader/clientAction 在路由层做防抖,request.signal 在再次调用时中止前一次请求。
迁移(HIGH):从 defer() 迁移到 data() 配合 promise 实现 Single Fetch;停止使用 jsonHash,改用原生 Promise.all 或 data() 模式;从已废弃的 json() 迁移到 data()。
流式渲染(CRITICAL):用 Await 配合 Suspense 处理流式数据。
使用方式 该规则集以规则文件形式组织,每条规则对应一个 @rules/ 下的 markdown 文件,并配有代码示例(BAD/GOOD 对比)。开发者可在编写对应代码时查阅相应规则。
适用场景 适用于使用 React Router 构建、且需要优化数据加载性能、规范表单与变更处理、实现流式渲染、组织路由结构或进行版本迁移的前端项目。
限制 资料未提供该规则集的安装命令、许可协议、版本兼容范围、维护状态或收费信息,暂未提供。