PageLayout.tsx 1.71 KB
import React, { FC } from 'react';
import { Layout, Menu, Breadcrumb } from 'antd';
import {
  Link,
  Switch,
  withRouter,
  RouteComponentProps,
  Route,
} from 'react-router-dom';

import routes from '../router';
import './PageLayout.less';

const { Item } = Menu;
const { Header, Content, Sider } = Layout;

interface PageLayoutProp {}
const PageLayout:FC<PageLayoutProp & RouteComponentProps> = () => (
  <Layout>
    <Header className="header">
      <div className="logo" />
    </Header>
    <Layout>
      <Sider width={200} className="site-layout-background">
        <Menu
          mode="inline"
          defaultSelectedKeys={['SystemSetting']}
          style={{ height: '100%', borderRight: 0 }}
        >
          {routes.map(route => (
            <Item key={route.key}>
              <Link to={route.path}>
                <span>{route.name}</span>
              </Link>
            </Item>
          ))}
        </Menu>
      </Sider>
      <Layout style={{ padding: '0 24px 24px' }}>
        <Breadcrumb style={{ margin: '16px 0' }}>
          <Breadcrumb.Item>Home</Breadcrumb.Item>
          <Breadcrumb.Item>List</Breadcrumb.Item>
          <Breadcrumb.Item>App</Breadcrumb.Item>
        </Breadcrumb>
        <Content
          className="site-layout-background"
          style={{
            padding: 24,
            margin: 0,
            minHeight: 280,
          }}
        >
          <Switch>
            {routes.map(route => (
              <Route
                key={route.key}
                path={route.path}
                component={route.component}
              />
            ))}
          </Switch>
        </Content>
      </Layout>
    </Layout>
  </Layout>
)

export default withRouter(PageLayout);