Menu
CoddyTech

根布局

本课属于 Coddy React 学习旅程的“Next.js 基础”单元。第 11 课,共 47 课。

每个应用都有一些不会变化的部分:页面框架、页眉和页脚。在 Next.js 中,这些内容放在 布局 中,最外层的布局称为 根布局。

这就是你一直锁定在面前的文件:

// app/layout.jsx
export default function RootLayout({ children }) {
    return (
        <html lang="en">
            <body>
                {children}
            </body>
        </html>
    );
}

它和页面有三点不同:

  • 它是必需的<html> 和 <body> 的文件
  • 它会接收 children,也就是 URL 匹配到的页面。如果忘记渲染 {children},应用就只会显示外壳,什么内容也没有。
  • 它会包裹应用中的每一个路由,无需任何页面导入它

它会一直存在

这部分会让人感到意外。当用户从 / 切换到 /menu 时,布局不会重新创建。Next.js 会替换布局中的页面,而布局本身保持不变。

这样,共享页眉就不会闪烁,侧边栏中的视频会继续播放,布局中的任何状态都能在导航过程中保留下来:打开的菜单会保持打开,滚动位置也会保持不变。布局是一个长期存在的框架,页面会在其中不断切换。

有一点值得记住:由于布局在导航时不会重新运行,因此无法读取当前页面的 searchParams。它不会监听这种变化。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Next.js 基础中的所有课