Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

错误边界 (Error Boundaries)

错误边界 (React Start)

TanStack Start 使用了 TanStack Router 的路由级错误边界机制。你可以:


配置全局默认值

// src/router.tsx
import { createRouter, ErrorComponent } from "@tanstack/react-router";
import { routeTree } from "./routeTree.gen";

export function getRouter() {
  const router = createRouter({
    routeTree,
    // 当错误冒泡到路由器时显示
    defaultErrorComponent: ({ error, reset }) => (
      <ErrorComponent error={error} />
    ),
  });
  return router;
}

按路由覆盖 (Per-route override)

// src/routes/posts.$postId.tsx
import { createFileRoute, ErrorComponent } from "@tanstack/react-router";
import type { ErrorComponentProps } from "@tanstack/react-router";

function PostError({ error, reset }: ErrorComponentProps) {
  // reset 函数允许你尝试重新渲染该路由
  return (
    <div>
      <h3>加载帖子时出错</h3>
      <ErrorComponent error={error} />
      <button onClick={() => reset()}>重试</button>
    </div>
  );
}

export const Route = createFileRoute("/posts/$postId")({
  component: PostComponent,
  // 为此特定路由定义错误组件
  errorComponent: PostError,
});

注意事项