布局
布局是用于一致地管理会在多个页面重复出现的 UI 元素(页眉、导航栏、页脚等)的结构。定义公共布局后,可以减少代码重复,并提供一致的用户体验。
创建布局文件
布局是 _layout.tsx 通过创建文件来定义的。根据文件的位置,适用范围会有所不同。
import { PropsWithChildren } from "react";
export default function Layout({ children }: PropsWithChildren) {
return <>{children}</>;
}设置布局适用范围
布局会根据文件路径自动应用。
pages/_layout.tsx:全局应用于所有页面。pages/about/_layout.tsx:intoss://{服务名}/about:仅应用于其下的所有页面。
布局可以嵌套使用。多个布局同时存在时,会按照从上级目录布局开始的顺序依次应用。
pages/
├── _layout.tsx // 全局布局
├── about/
│ ├── _layout.tsx // about 区块布局
│ ├── index.tsx // about 主页面
│ └── team.tsx // 团队介绍页面
└── index.tsx // 主页面例如,如果是上述结构 about/team.tsx 页面会按以下顺序应用布局。
pages/_layout.tsx(全局布局)pages/about/_layout.tsx(区块布局)pages/about/team.tsx(实际页面组件)
这样构成后,可以将全局所需的 UI 元素与仅在特定区块中需要的 UI 元素分开管理。
布局示例
全局布局
我们来创建一个适用于所有页面的公共布局。
按区块划分的布局
可以创建只在特定区块中使用的布局。
从布局中获取查询参数
布局中也可以使用查询参数。 useParams 借助这个 Hook,可以读取当前界面的参数并动态使用。
useParams Hook 使用示例
下面的示例会获取通过 URL 查询参数传入的 title 值,并将其显示为界面顶部标题。
参考文档
使用查询参数
最后更新于
这有帮助吗?