利用umi3.4的框架引用antd的一个简单的布局

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版权协议,转载请附上原文出处链接和本声明。