BasicLayout.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // BasicLayout.tsx
  2. import React from 'react';
  3. import { Layout, Menu, Breadcrumb } from 'antd';
  4. import { Link } from 'react-router-dom';
  5. const { Header, Content, Footer, Sider } = Layout;
  6. interface BasicLayoutProps {
  7. children: React.ReactNode;
  8. }
  9. const BasicLayout: React.FC<BasicLayoutProps> = ({ children }) => {
  10. return (
  11. <Layout style={{ minHeight: '100vh' }}>
  12. <Header className="header">
  13. <div className="logo" />
  14. <Menu theme="dark" mode="horizontal" defaultSelectedKeys={['2']}>
  15. <Menu.Item key="1"><Link to="/">Home</Link></Menu.Item>
  16. <Menu.Item key="2"><Link to="/about">About</Link></Menu.Item>
  17. </Menu>
  18. </Header>
  19. <Layout>
  20. <Sider width={200} className="site-layout-background">
  21. <Menu mode="inline" defaultSelectedKeys={['1']}>
  22. <Menu.Item key="1">Option 1</Menu.Item>
  23. <Menu.Item key="2">Option 2</Menu.Item>
  24. </Menu>
  25. </Sider>
  26. <Layout style={{ padding: '0 24px 24px' }}>
  27. <Breadcrumb style={{ margin: '16px 0' }}>
  28. <Breadcrumb.Item>Home</Breadcrumb.Item>
  29. <Breadcrumb.Item>List</Breadcrumb.Item>
  30. <Breadcrumb.Item>App</Breadcrumb.Item>
  31. </Breadcrumb>
  32. <Content
  33. className="site-layout-background"
  34. style={{
  35. padding: 24,
  36. margin: 0,
  37. minHeight: 280,
  38. }}
  39. >
  40. {children}
  41. </Content>
  42. <Footer style={{ textAlign: 'center' }}>
  43. Ant Design ©2025 Created by Ant UED
  44. </Footer>
  45. </Layout>
  46. </Layout>
  47. </Layout>
  48. );
  49. };
  50. export default BasicLayout;