載入介面與錯誤

loading.tsx、error.tsx、not-found.tsx、主控台內的 Redbox 與 Dev Overlay。

載入狀態與錯誤邊界會在主控台中渲染。使用 loading.tsx 和 error.tsx 為各路由區段定義載入狀態與錯誤邊界。

載入介面

新增 loading.tsx,在頁面暫停渲染時顯示備用介面。

app/sessions/[id]/loading.tsxtsx
import { Spinner } from "@textjs/app";export default function Loading() {  return <Spinner variant="dots" label="Loading session…" />;}
即時56×10 · booting Turbolog…tsx
preview://spinner:1
<Box className="flex-col gap-1 p-1">  <Spinner variant="dots" label="Loading session…" />  <Spinner variant="pulse" label="Streaming frames" /></Box>

錯誤

新增 error.tsx 以捕捉渲染錯誤。此元件會接收錯誤與 reset 函式。

app/sessions/[id]/error.tsxtsx
import { Text, useInput, type ErrorComponentProps } from "@textjs/app";export default function SessionError({ error, reset }: ErrorComponentProps) {  useInput((e) => e.input === "r" && reset());  return <Text color="danger">{error.message} · press r to retry</Text>;}

找不到頁面

呼叫 notFound() 以渲染最近的 not-found.tsx。

import { notFound } from "@textjs/app/navigation";if (!session) notFound();

主控台內的 Redbox

在開發環境中,未捕捉的錯誤會在主控台內開啟覆蓋層,顯示錯誤訊息與原始碼位置。修正檔案後,覆蓋層就會關閉。

╭─ ▼ Unhandled Runtime Error ─────────────────╮│  TypeError: Cannot read 'title'             ││  app/sessions/[id]/page.tsx (14:27)         │╰───────────────────────────── esc dismiss ───╯

開發覆蓋層

在開發環境中,主控台左下角的 [▼] 膠囊按鈕就是開發覆蓋層。按 F2 或 Ctrl+` 開啟,檢視路由、影格耗時與版面配置。使用 devIndicators: false 停用。

在 GitHub 編輯此頁