【開發】3.4-Layout 組件

Layout 組件 是 Pro v4 中新增的組件,與一般的組件不同,它非常重型,在其中集成了菜單、佈局、頁頭、麪包屑、設置抽屜等多種功能。

1. ProLayout

在 Ant Design Pro 中,默認使用了 pro-layout,打開 Pro 後我們可以看到這樣的界面:

在這裏插入圖片描述

對於標題和 logo,Layout 提供了 titlelogo屬性來自定,如果你有更強的定製需求,可以試試 menuHeaderRender: (logo,title)=>ReactNode 屬性,onMenuHeaderClick 允許你覆蓋默認的點擊事件。

 <BasicLayout
    {...defaultProps}
    title="Remax"
    logo="https://gw.alipayobjects.com/mdn/rms_b5fcc5/afts/img/A*1NHAQYduQiQAAAAAAAAAAABkARQnAQ"
    menuHeaderRender={(logo, title) => (
      <div
        id="customize_menu_header"
        onClick={() => {
          window.open('https://remaxjs.org/');
        }}
      >
        {logo}
        {title}
      </div>
    )}
  />
);

如果你需要自定義的 menu ,siderWidth 屬性可以控制右側菜單的寬度,menuRendermenuItemRender 可以讓你完成自定義整個菜單。menuDataRender 可以用於自定義菜單數據,你可以將其替換爲從服務器獲取的數據。

<BasicLayout
  menuDataRender={() => [
    {
      path: '/',
      name: 'welcome',
      icon: 'smile',
      children: [
        {
          path: '/welcome',
          name: 'one',
          children: [
            {
              path: '/welcome/welcome',
              name: 'two',
              icon: 'smile',
              exact: true,
            },
          ],
        },
      ],
    },
  ]}
  menuItemRender={(menuItemProps, defaultDom) =>
    menuItemProps.isUrl ? defaultDom : <a>open {defaultDom}</a>
  }
>
  Hello World
</BasicLayout>

2. PageHeaderWrapper

PageHeaderWrapper 封裝了 ant design 的 PageHeader 組件,增加了 tabListcontent。 根據當前的路由填入 titlebreadcrumb。它依賴 Layout 的 route 屬性。當然你可以傳入參數來複寫默認值。 PageHeaderWrapper 支持 TabsPageHeader 的所有屬性。

PageHeaderWrapper 必須要被 ProLayout 包裹才能自動生成麪包屑和標題。

3. SettingDrawer

因爲 SettingDrawer 過於靈活而且配合 umi-plugin-antd-theme 有嚴重的性能問題。因此我們不建議在正式環境中使用 SettingDrawer,你需要人肉引入一下 SettingDrawer。預覽網站中是通過 fetch:blocks 來添加的。

SettingDrawer 提供了一個圖形界面來設置 layout 的配置,方便在演示環境中展示 Layout 的所有能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章