关于 tanstack-router
此 Skill 用于处理 TanStack Router,重点涵盖路由树、类型化导航和路由数据加载。它提供设置、URL 状态、loader、SSR、测试及生产检查的工作流程与实现指引。
主要功能
- 01检查项目结构与路由模式
- 02文件路由树指引
- 03类型化导航与 URL 状态模式
- 04loader、上下文和错误处理指引
- 05SSR、测试与生产验证
适用场景
- 01新增或修改 TanStack Router 路由
- 02实现类型化搜索参数和导航
- 03检查 loader、认证重定向及错误边界
- 04验证路由生成和生产环境行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill tanstack-router安装后在 Claude Code 中输入/tanstack-router确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/loaders-context-errors.mdnavigation-url-state.mdproduction-testing.mdsetup-route-trees.mdsource-map.md详细介绍
TanStack Router
当工作涉及 TanStack Router 时使用此技能,尤其是涉及 @tanstack/react-router、src/routes/**、src/router.tsx、路由树生成、类型化导航或路由自身的数据加载时。
工作流
- 首先检查本地 Router 的结构:
@tanstack/react-router、@tanstack/router-plugin、开发工具、适配器以及任何 Query/SSR 集成的包版本。- 路由模式:基于文件、基于代码、虚拟文件路由或混合模式。
- 路由入口:
src/routes/__root.tsx、src/router.tsx、生成的src/routeTree.gen.ts、应用/客户端入口,以及存在时的 SSR 入口。 - 会影响行为的路由选项:
validateSearch、params、beforeLoad、loaderDeps、loader、pendingComponent、errorComponent、notFoundComponent、search.middlewares、staleTime、gcTime、preload和ssr集成。
- 对于当前行为、新版本、SSR、测试、路由生成或迁移,查阅最新文档。从 source-map.md 开始。
- 有关设置、安装、路由树生成、文件命名,以及在路由旁放置非路由模块(
-components、-hooks、-lib等),请参阅 setup-route-trees.md。 - 有关链接、导航、参数、搜索参数、掩码和 URL 状态,请参阅 navigation-url-state.md。
- 有关加载器、上下文、身份验证守卫、Query 集成、错误/未找到边界、预加载和延迟数据,请参阅 loaders-context-errors.md。
- 有关 SSR、部署重写、测试、开发工具、ESLint 和生产环境检查,请参阅 production-testing.md。
实现判断
- 除非仓库已采用基于代码的路由,或用户另有要求,否则优先使用基于文件的路由。
- 将
routeTree.gen.ts视为生成产物。不要手动编辑;应通过仓库的打包工具/CLI 流程重新生成。 - 将路由自身的 UI/钩子/辅助函数放在带连字符前缀的文件夹中(
routeFileIgnorePrefix,默认为-)。不要在routes/下放置无此前缀的非路由文件。 - 保持导航类型安全。不要通过将参数或查询字符串插入
to来构造路径;应分别传入to、params、search和hash。 - 每个读取 URL 搜索状态的路由都应声明
validateSearch;使用loaderDeps仅暴露加载器实际使用的搜索字段。 - 使用
beforeLoad实现路由的用户体验控制、重定向和上下文扩充。不要将路由守卫视为私有数据的授权边界。 - 将路由共享的依赖放入 Router 上下文;不要直接在
beforeLoad或loader中调用 React 钩子。 - 明确决定使用 Router 内置的 SWR 加载器缓存,还是使用 TanStack Query 之类的外部缓存。当由 Query 管理新鲜度时,将 Router 预加载的过期时间设为
0,并由 Query 负责请求去重。对于 Query 5.102+,通过queryClient.query(...)加载;ensureQueryData/prefetchQuery/fetchQuery已弃用。 - 在 React 中,将
errorComponent/onCatch的错误类型设为unknown,并在读取message前进行类型收窄。 - 在加载器中使用
notFound()处理未找到的资源,以确保加载器数据类型正确,并避免 UI 闪烁。
验证
优先使用仓库现有的检查。对于有实质影响的 Router 改动,请执行以下相关检查:
- 通过开发/构建流程或明确的 Router CLI 命令生成路由树。
- 对路由引用、参数、搜索状态、加载器和上下文进行类型检查。
- 针对路由匹配、搜索验证、加载器、身份验证重定向、未找到/错误边界和导航进行定向测试。
- 在浏览器中进行冒烟测试,检查直接加载、客户端导航、前进/后退、刷新以及生产环境中的重写行为。
评论
支持 Markdown