layout.tsx

创建布局文件,布局是在多个页面之间共享的 UI,在路由跳转时,layout 不会重新渲染,会保持内部状态

export default function DashboardLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body>
        {/* Layout UI */}
        {/* Place children where you want to render a page or nested layout */}
        <main>{children}</main>
      </body>
    </html>
  )
}

layout 的 props 接受一个 children 属性,children 就是页面(page.tsx)的具体内容

最佳实践

抽取每个页面都要用的东西(如导航栏、侧边栏、底部信息)成单独的组件,然后在 layout 里引入这个组件即可

page.tsx

路由对应的真正的网页内容