页面容器
一个包裹页面内容并提供标题、面包屑和页面操作的组件。
PageContainer 是仪表盘内容理想的包装器。它显示当前页面标题,并提供面包屑以导航回当前层级结构。它通过在底层使用 Material UI Container 组件使您的页面具有响应性。
就像 DashboardLayout 一样,PageContainer 使用在 AppProvider 中定义的导航结构来构建其面包屑和标题。
订单
标题和面包屑
面包屑是通过将当前路径名与 AppProvider 中定义的导航结构匹配而形成的。匹配段落的标题用作页面标题。您可以使用 title 属性覆盖页面标题。
例如,在以下导航结构下
<AppProvider
navigation={[
{
segment: 'home',
title: 'Home',
children: [
{
segment: 'orders',
title: 'Orders',
},
],
},
]}
>
...
</AppProvider>
当您访问路径 /home/orders 时,面包屑包含 ACME / 首页 / 订单,并且页面标题为 订单。
订单
动态路由
当您在动态路由上使用 PageContainer 时,您可能希望设置属于特定路径的标题和面包屑。您可以使用 PageContainer 的 title 和 breadcrumbs 属性来实现这一点
您可以使用 useActivePage Hook 来检索活动页面的标题和面包屑。这样您就可以扩展现有值。
import { useActivePage } from '@toolpad/core/useActivePage';
import { Breadcrumb } from '@toolpad/core/PageContainer';
// Pass the id from your router of choice
function useDynamicBreadcrumbs(id: string): Breadcrumb[] {
const activePage = useActivePage();
invariant(activePage, 'No navigation match');
const title = `Item ${id}`;
const path = `${activePage.path}/${id}`;
return [...activePage.breadcrumbs, { title, path }];
}
例如,在 Next.js App Router 下,您将能够按如下方式获取动态路由的面包屑
// ./src/app/example/[id]/page.tsx
'use client';
import { useParams } from 'next/navigation';
import { PageContainer } from '@toolpad/core/PageContainer';
import invariant from 'invariant';
import { useActivePage } from '@toolpad/core/useActivePage';
export default function Example() {
const params = useParams<{ id: string }>();
const activePage = useActivePage();
invariant(activePage, 'No navigation match');
const title = `Item ${params.id}`;
const path = `${activePage.path}/${params.id}`;
const breadcrumbs = [...activePage.breadcrumbs, { title, path }];
return (
<PageContainer title={title} breadcrumbs={breadcrumbs}>
...
</PageContainer>
);
}
响应性
Page Container 组件继承了 Material UI Container 组件的属性。您可以使用其 maxWidth 和 fixed 属性来控制页面的边界。将 maxWidth 设置为 false 以完全禁用容器,并使内容一直延伸到页面边缘。
独立页面标题
PageContainer 中包含的 PageHeader 组件可以单独导入和使用,如果您希望这样做以获得更大的自定义自由度。
订单
操作
您可以在右侧保留的区域中配置其他操作。为此,请为 PageContainer 组件提供自定义的 header 插槽,您可以在其中为 PageHeader 提供自定义的 toolbar 插槽。您可以包装 PageHeaderToolbar 组件以创建自定义工具栏组件,如下所示
天气
当前状态活动
24°C
5%
18公里/小时
全尺寸内容
容器内的内容可以占据所有剩余的可用区域,样式如 flex: 1 或 height: 100%。