template.js

template 檔案與 layout (版面配置) 類似,都會包裹每個子版面配置或頁面。不同之處在於,版面配置會跨路由持續存在並保持狀態,而模板會在導航時為每個子項目創建新實例。

export default function Template({ children }: { children: React.ReactNode }) {
  return <div>{children}</div>
}
template.js 特殊檔案

雖然較不常見,但在以下情況您可能會選擇使用模板而非版面配置:

  • 需要使用 useEffect 的功能(例如記錄頁面瀏覽)和 useState(例如每頁面的意見回饋表單)。
  • 需要變更框架的預設行為。例如,版面配置內的 Suspense Boundaries 僅在首次載入版面配置時顯示後備內容,切換頁面時不會顯示。而模板則會在每次導航時顯示後備內容。

Props (屬性)

children (必填)

模板元件應接受並使用 children 屬性。template 會渲染在 layout (版面配置) 及其子項目之間。例如:

Output
<Layout>
  {/* 請注意模板會被賦予唯一的 key。 */}
  <Template key={routeParam}>{children}</Template>
</Layout>

須知事項:

版本歷史

版本變更內容
v13.0.0引入 template 功能。

On this page