1.先看官网的布局有哪些样式(https://ant.design/components/layout-cn/)
此次我将引用如下的布局:
2.在项目的src目录下新建一个layouts目录,并在该目录下新建一个index.js
因为在umi中约定的目录结构中,layouts/index.js文件将被作为全局的布局文件
所以我们需要把布局的代码写在该index.js中
import React from 'react';
import { Layout } from 'antd';
const { Header, Footer, Sider, Content } = Layout;
class BasicLayout extends React.Component{
render() {
return(
<Layout>
<Sider>Sider</Sider>
<Layout>
<Header>Header</Header>
<Content>{
this.props.children //作用是把其他的.js文件包括在content中,实现其他文件嵌套在该布局中的作用
}</Content>
<Footer>Footer</Footer>
</Layout>
</Layout>
);
}
}
export default BasicLayout;
打开MyDatePicker.js,效果如下:
另外:
如果我们的某个js文件想套用其他的布局,那么可以在config.js中进行指定(注意:布局默认情况下就是layouts/index.js)
比如我在src目录写了另外一个布局存放在layouts2/index.js文件中,那么就可以通过以下的方式进行引用
routes: [{
path: '/',
component: '../layouts2', //配置布局路由
routes: [ //在这里进行配置子页面
{
path: '/myDatePicker',
component: './myDatePicker'
}
]
}]
3.对页面进行美化
render() {
return(
<Layout>
<Sider width={256} style={{ background:'#3299CC',minHeight: '100vh', color: 'yellow' }}
>
Sider
</Sider>
<Layout>
<Header style={{ background: '#fff', textAlign: 'center', padding: 0 }}
>
Header
</Header>
<Content style={{ margin: '24px 16px 0' }}>
<div style={{ padding: 24, background: '#8FBC8F', minHeight: 360, textAlign:'center' }}>
{this.props.children}
</div>
</Content>
<Footer style={{ textAlign: 'center' }}>后台系统 ©2021 Created by 字节跳动>Footer</Footer>
</Layout>
</Layout>
);
}
效果如下:
4.在侧边栏引入导航条
打开antd官网,选择自己要引入的导航条
效果:
完整代码:
import React from 'react';
import { Layout } from 'antd';
import { Menu, Button } from 'antd';
import {
AppstoreOutlined,
MenuUnfoldOutlined,
MenuFoldOutlined,
PieChartOutlined,
DesktopOutlined,
ContainerOutlined,
MailOutlined,
} from '@ant-design/icons';
const { SubMenu } = Menu;
const { Header, Footer, Sider, Content } = Layout;
class BasicLayout extends React.Component{
state = {
collapsed: false,
};
toggleCollapsed = () => {
this.setState({
collapsed: !this.state.collapsed,
});
};
render() {
return(
<Layout>
<Sider width={256} style={{ background:'#000000',minHeight: '100vh', color: 'yellow' }}
>
<div style={{ width: 256 }}>
<Button type="primary" onClick={this.toggleCollapsed} style={{ marginBottom: 16 }}>
{React.createElement(this.state.collapsed ? MenuUnfoldOutlined : MenuFoldOutlined)}
</Button>
<Menu
defaultSelectedKeys={['1']}
defaultOpenKeys={['sub1']}
mode="inline"
theme="dark"
inlineCollapsed={this.state.collapsed}
>
<Menu.Item key="1" icon={<PieChartOutlined />}>
Option 1
</Menu.Item>
<Menu.Item key="2" icon={<DesktopOutlined />}>
Option 2
</Menu.Item>
<Menu.Item key="3" icon={<ContainerOutlined />}>
Option 3
</Menu.Item>
<SubMenu key="sub1" icon={<MailOutlined />} title="Navigation One">
<Menu.Item key="5">Option 5</Menu.Item>
<Menu.Item key="6">Option 6</Menu.Item>
<Menu.Item key="7">Option 7</Menu.Item>
<Menu.Item key="8">Option 8</Menu.Item>
</SubMenu>
<SubMenu key="sub2" icon={<AppstoreOutlined />} title="Navigation Two">
<Menu.Item key="9">Option 9</Menu.Item>
<Menu.Item key="10">Option 10</Menu.Item>
<SubMenu key="sub3" title="Submenu">
<Menu.Item key="11">Option 11</Menu.Item>
<Menu.Item key="12">Option 12</Menu.Item>
</SubMenu>
</SubMenu>
</Menu>
</div>
</Sider>
<Layout>
<Header style={{ background: '#fff', textAlign: 'center', padding: 0 }}
>
Header
</Header>
<Content style={{ margin: '24px 16px 0' }}>
<div style={{ padding: 24, background: '#8FBC8F', minHeight: 360, textAlign:'center' }}>
{this.props.children}
</div>
</Content>
<Footer style={{ textAlign: 'center' }}>后台系统 ©2021 Created by 字节跳动>Footer</Footer>
</Layout>
</Layout>
);
}
}
export default BasicLayout;
5.为导航条添加链接,就能指向其他的页面
在pages目录下创建一个fruit目录,并创建两个js文件
并在index.js中修改如下
效果:
接下来修改icon图标:
来到antd官网
选择如下其中一个都可以:
修改如下代码:
6.为导航菜单添加链接
此处需使用Link标签,故需导入
import { Link } from 'umi';
效果:
版权声明:本文为qq_45736175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。