什么是导航

导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。

一般分为顶部导航和侧边导航,顶部导航提供全局性的类目和功能,侧边导航提供多级结构来收纳和排列网站架构。

如何实现侧边导航

首先,我们看一下最常见的导航构成。你会发现导航也是由多个组件,如 Sider 侧边栏组件,Logo 网站标志组件,SubMenu 子菜单,MenuItem 菜单选项等组合而成。

侧边导航 - 图1

我们在上一节代码的基础上修改,在 Sider 组件中添加 Menu 菜单项,一个普通的导航菜单完整代码如下:

  1. // 注意这里我们除了从antd中引入了Layout布局组件,还引入了Menu菜单组件,Icon图标组件
  2. import { Component } from 'react';
  3. import { Layout, Menu, Icon } from 'antd';
  4. const { Header, Footer, Sider, Content } = Layout;
  5. // 引入子菜单组件
  6. const SubMenu = Menu.SubMenu;
  7. export default class BasicLayout extends Component {
  8. render() {
  9. return (
  10. <Layout>
  11. <Sider width={256} style={{ minHeight: '100vh' }}>
  12. <div style={{ height: '32px', background: 'rgba(255,255,255,.2)', margin: '16px'}}/>
  13. <Menu theme="dark" mode="inline" defaultSelectedKeys={['1']}>
  14. <Menu.Item key="1">
  15. <Icon type="pie-chart" />
  16. <span>Helloworld</span>
  17. </Menu.Item>
  18. <SubMenu
  19. key="sub1"
  20. title={<span><Icon type="dashboard" /><span>Dashboard</span></span>}
  21. >
  22. <Menu.Item key="2">分析页</Menu.Item>
  23. <Menu.Item key="3">监控页</Menu.Item>
  24. <Menu.Item key="4">工作台</Menu.Item>
  25. </SubMenu>
  26. </Menu>
  27. </Sider>
  28. <Layout >
  29. <Header style={{ background: '#fff', textAlign: 'center', padding: 0 }}>Header</Header>
  30. <Content style={{ margin: '24px 16px 0' }}>
  31. <div style={{ padding: 24, background: '#fff', minHeight: 360 }}>
  32. {this.props.children}
  33. </div>
  34. </Content>
  35. <Footer style={{ textAlign: 'center' }}>Ant Design ©2018 Created by Ant UED</Footer>
  36. </Layout>
  37. </Layout>
  38. )
  39. }
  40. }

上面代码中,MenuSider 的子组件,SubMenuMenu 的子组件,Menu.Item 是最小的导航选项。

上面的代码运行得到的效果如下:

侧边导航 - 图2

恭喜,至此我们就实现了导航的侧边栏展现。下一节,我们将配置路由,使得点击对应的导航选项的时候,页面展示对应信息。