实践webpack+es6+react+redux+antd构建项目(五) antd Layout菜单

释放双眼,带上耳机,听听看~!

基本的配置大概已经结束了,现在我们可以使用antd的组件来进行业务开发了。

实现效果图:
实践webpack+es6+react+redux+antd构建项目(五) antd Layout菜单

改动的地方如下:
实践webpack+es6+react+redux+antd构建项目(五) antd Layout菜单

新建一个全局菜单文件 layout/index.js


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
1import React from 'react';
2import { Layout, Menu, Icon, Breadcrumb } from 'antd';
3import { withRouter } from 'react-router-dom';
4
5const {
6    Header, Content, Footer, Sider,
7  } = Layout;
8const SubMenu = Menu.SubMenu;
9
10class LayoutBasic extends React.PureComponent {
11    state = {
12        collapsed: true,
13        menu: [
14            {
15                match: '/todoList',
16                icon: 'book',
17                name: '清单列表'
18            },
19            {
20                match: '/myList',
21                icon: 'calendar',
22                name: '我的列表'
23            },
24            {
25                match: '/user',
26                icon: 'team',
27                name: '关于我'
28            }
29        ]
30    }
31    render() {
32        return (
33            <Layout
34                style={{ minHeight: '100vh' }}
35            >
36                <Sider
37                    theme="dark"
38                    collapsed={this.state.collapsed}
39                    collapsedWidth="0"
40                    breakpoint="sm"
41                    onCollapse={() => { this.setState({ collapsed: !this.state.collapsed }); }}
42                >
43                    <Menu
44                        theme="dark"
45                        mode="inline"
46                        selectedKeys={this.state.menu
47                            .filter(item => this.props.location.pathname.indexOf(item.match)=== 0)
48                            .map(item => item.match)}
49                        onClick={(item) => {
50                            if (item.key !== this.props.location.pathname + this.props.location.search) {
51                                this.props.history.push(item.key);
52                            }
53                        }}
54                    >
55                        {
56                            this.state.menu.map(item => (
57                                <Menu.Item key={item.match} >
58                                    <Icon type={item.icon} />
59                                    <span>{item.name}</span>
60                                </Menu.Item>
61                            ))
62                        }
63                    </Menu>
64                </Sider>
65                <Layout>
66                    <Header style={{ background: '#fff', padding: 0 }} />
67                    <Content style={{ margin: '0 16px' }}>
68                        {this.props.children}
69                    </Content>
70                </Layout>
71            </Layout>
72        )
73    }
74}
75export default withRouter(LayoutBasic)
76
77

详细参考:Layout

APP.js中修改如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1import LayoutBasic from './layout/';
2
3const App = ((history) => {
4    return (    
5        <Router history={history}>
6            <LayoutBasic>
7                <Switch>
8                    <Route path="/" exact component={TodoList}></Route>
9                    <Route path="/todoList" exact component={TodoList}></Route>
10                    <Route path="/todoDetail" exact component={TodoDetail}></Route>
11                </Switch>
12            </LayoutBasic>
13        </Router>
14    )
15});
16
17

这里主要就是使用 包裹
,实现全局的左侧菜单~

想要实现更多样式的布局可以参考 **Antd Layout**官方文档

over~

链接:

  • 实践webpack+es6+react+redux+antd构建项目(一) webpack配置
  • 实践webpack+es6+react+redux+antd构建项目(二) react,redux,antd引入
  • 实践webpack+es6+react+redux+antd构建项目(三) 配置proxy代理
  • 实践webpack+es6+react+redux+antd构建项目(四) 区分dev和prod环境
  • 项目github地址

关注我获取更多前端资源和经验分享
实践webpack+es6+react+redux+antd构建项目(五) antd Layout菜单

感谢大佬们阅读,希望大家头发浓密,睡眠良好,情绪稳定,早日实现财富自由~

给TA打赏
共{{data.count}}人
人已打赏
安全技术

加密算法介绍

2021-8-18 16:36:11

安全技术

C++ 高性能服务器网络框架设计细节

2022-1-11 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索