mcpField
T
tanstack-router

tanstack-router

github.com/secondsky开发240454 次安装5 周前更新
代码仓库

关于 tanstack-router

面向使用 TanStack Router 和 TypeScript 构建 React SPA 的开发者,介绍文件路由、类型安全导航、路由数据加载及 Cloudflare Workers 部署。

主要功能

  1. 01类型安全导航模式
  2. 02文件路由配置
  3. 03用于数据获取的路由加载器
  4. 04TanStack Query 集成
  5. 05Cloudflare Workers 部署指南
  6. 06模板与故障排查参考

适用场景

  1. 01为 React SPA 配置文件路由
  2. 02使用类型化参数加载路由数据
  3. 03将路由加载器与 TanStack Query 集成
  4. 04配置项目以部署到 Cloudflare Workers

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/claude-skills --skill tanstack-router

安装后在 Claude Code 中输入/tanstack-router确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
common-errors.md
templates/
package.json
route-examples.tsx
vite.config.ts

详细介绍

TanStack Router 技能

使用 TanStack Router 为 React SPA 构建类型安全的基于文件的路由,并针对部署到 Cloudflare Workers 进行了优化。


适用场景

提及以下内容时会自动触发:

  • “TanStack Router”或“类型安全路由”
  • “基于文件的路由”或“路由配置”
  • 强调 TypeScript 的“React 路由”
  • “路由加载器”或“在路由中加载数据”
  • “Cloudflare Workers 路由”

在以下场景中使用此技能:

  • 使用类型安全导航构建 SPA
  • 实现基于文件的路由(类似 Next.js)
  • 需要路由级别的数据加载
  • 将路由与 TanStack Query 集成
  • 部署到 Cloudflare Workers
  • 希望获得比 React Router 更好的 TypeScript 支持

快速开始

安装
bun add @tanstack/react-router @tanstack/router-devtools
bun add -d @tanstack/router-plugin

最新版本: v1.170.18(已于 2026-08-03 验证)

Vite 配置
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'

export default defineConfig({
  plugins: [
    TanStackRouterVite(), // MUST come before react()
    react(),
  ],
})
基本设置
// src/routes/__root.tsx
import { createRootRoute, Outlet } from '@tanstack/react-router'

export const Route = createRootRoute({
  component: () => (
    <div>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
      </nav>
      <hr />
      <Outlet />
    </div>
  ),
})

// src/routes/index.tsx
import { createFileRoute } from '@tanstack/react-router'

export const Route = createFileRoute('/')({
  component: () => <h1>Home Page</h1>,
})

// src/routes/about.tsx
import { createFileRoute } from '@tanstack/react-router'

export const Route = createFileRoute('/about')({
  component: () => <h1>About Page</h1>,
})

// src/main.tsx
import { createRouter, RouterProvider } from '@tanstack/react-router'
import { routeTree } from './routeTree.gen' // Auto-generated

const router = createRouter({ routeTree })

function App() {
  return <RouterProvider router={router} />
}

主要功能

1. 类型安全导航
// Fully typed!
<Link to="/posts/$postId" params={{ postId: '123' }} />

// TypeScript error if route doesn't exist
<Link to="/invalid-route" /> // ❌ Error!
2. 路由加载器(数据获取)
// src/routes/posts.$postId.tsx
export const Route = createFileRoute('/posts/$postId')({
  loader: async ({ params }) => {
    const post = await fetchPost(params.postId) // Fully typed!
    return { post }
  },
  component: ({ useLoaderData }) => {
    const { post } = useLoaderData()
    return <h1>{post.title}</h1>
  },
})
3. TanStack Query 集成
import { queryOptions } from '@tanstack/react-query'

const postQueryOptions = (postId: string) =>
  queryOptions({
    queryKey: ['posts', postId],
    queryFn: () => fetchPost(postId),
  })

export const Route = createFileRoute('/posts/$postId')({
  loader: ({ context: { queryClient }, params }) =>
    queryClient.ensureQueryData(postQueryOptions(params.postId)),
  component: () => {
    const { postId } = Route.useParams()
    const { data: post } = useQuery(postQueryOptions(postId))
    return <h1>{post.title}</h1>
  },
})

常见错误与解决方案

错误 1:开发工具依赖解析

问题: 构建失败,提示找不到 @tanstack/router-devtools-core。

解决方案:

bun add @tanstack/router-devtools
错误 2:Vite 插件顺序

问题: 路由未自动生成。

解决方案: TanStackRouterVite 必须放在 react() 之前:

plugins: [
  TanStackRouterVite(), // First!
  react(),
]
错误 3:缺少类型注册

问题: Link to 没有类型提示。

解决方案:

// src/routeTree.gen.ts is auto-generated
// Import it in main.tsx to register types
import { routeTree } from './routeTree.gen'
错误 4:加载器未运行

问题: 导航时未调用加载器函数。

解决方案: 确保路由导出 Route:

export const Route = createFileRoute('/path')({ loader: ... })
错误 5:表单导致内存泄漏

问题: 使用 TanStack Form + Router 时,生产环境发生崩溃。

解决方案: 这是一个已知问题(#5734)。临时解决方法:改用 React Hook Form,或等待修复。


部署到 Cloudflare Workers

Vite 配置
import { defineConfig } from 'vite'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'
import { cloudflare } from '@cloudflare/vite-plugin'

export default defineConfig({
  plugins: [
    TanStackRouterVite(),
    react(),
    cloudflare(),
  ],
})
API 后端模式
// functions/api/posts.ts
export async function onRequestGet({ env }) {
  const { results } = await env.DB.prepare('SELECT * FROM posts').all()
  return Response.json(results)
}

// Client-side route
export const Route = createFileRoute('/posts')({
  loader: async () => {
    const posts = await fetch('/api/posts').then(r => r.json())
    return { posts }
  },
})

模板

所有模板均位于 ~/.claude/skills/tanstack-router/templates/:

  1. package.json - 依赖项和版本
  2. vite.config.ts - Vite 插件设置
  3. basic-routes/ - 基于文件的路由结构
  4. route-with-loader.tsx - 数据加载示例
  5. query-integration.tsx - TanStack Query 模式
  6. nested-routes/ - 布局模式
  7. cloudflare-deployment.md - Workers 设置指南

参考文档

深入指南位于 ~/.claude/skills/tanstack-router/references/:

  1. file-based-routing.md - 路由结构约定
  2. type-safety.md - TypeScript 模式
  3. data-loading.md - 加载器和 TanStack Query
  4. cloudflare-workers.md - 部署指南
  5. common-errors.md - 所有 7 个以上错误及其解决方案
  6. migration-guide.md - 从 React Router 迁移

与现有技能集成

可配合使用:

  • tanstack-query - 推荐用于数据获取
  • tanstack-table - 展示路由中的数据
  • cloudflare-worker-base - API 后端
  • tailwind-v4-shadcn - UI 样式

令牌效率

不使用此技能: 约 10k 个令牌,40–50 分钟,3–4 个错误
使用此技能: 约 4k 个令牌,15–20 分钟,0 个错误
节省: 60% 令牌,65% 时间


生产环境验证

已测试:

  • React 19.2、Vite 7.3、TypeScript 5.9
  • Cloudflare Workers(Wrangler 4.0)
  • TanStack Query v5.101.4

技术栈兼容性:

  • ✅ Cloudflare Workers + Static Assets
  • ✅ TanStack Query 集成
  • ✅ TypeScript 严格模式

最后更新: 2026-08-03
库版本: @tanstack/react-router v1.170.18

评论

支持 Markdown