使用Ant Design中Layout布局实现一个简单的react管理后台(一)

一、Home.js中引入Ant Design

具体可查看官网

import { Layout, Menu, Breadcrumb } from 'antd';
import {
  DesktopOutlined,
  PieChartOutlined,
  FileOutlined,
  TeamOutlined,
  UserOutlined,
} from '@ant-design/icons';

const { Header, Content, Footer, Sider } = Layout;
const { SubMenu } = Menu;

二、修改菜单

<SubMenu key="sub1" icon={<UserOutlined/>} title="用户管理">
  <Menu.Item key="1">
      <Link to="/userInfo">用户信息</Link>
  </Menu.Item>
  <Menu.Item key="2">
      <Link to="/authority">权限信息</Link>
  </Menu.Item>
</SubMenu>

三、内容区域添加需要的组件

<Content
          className="site-layout-background"
          style={{
              padding: 24,
              margin: 0,
              minHeight: 280,
          }}
      >
          {/*内容区域*/}
          <Route exact path="/userInfo" component={UserInfo} />

</Content>

四、引入路由,并用Router包裹Layout代码块

import { BrowserRouter as Router, Route, NavLink,Link } from "react-router-dom";

在这里插入图片描述

五、效果如下

在这里插入图片描述

六、完整代码

Router.js

import React from 'react'
import ReactDOM from "react-dom";
import {BrowserRouter as Router,Switch,Redirect, Route} from "react-router-dom";
import Home from '../views/Home.js'
import News from '../views/News.js'
import Course from '../views/Course.js'
import JoinUs from '../views/JoinUs.js'
import A from '../containers/A.js'
import advantage from '../containers/advantage.js'
import App from '../App';
import Login from '../views/account/Login'
import Store from '../components/testStore'
import UserInfo from "../views/user/UserInfo";
const BasicRoute = () => (
     <Router>
        <div>
            <Switch>
                <Route exact path="/" component={Login} />
                <Route path="/Home" component={Home} />
                {/*<Route path="/userInfo" component={UserInfo} />*/}
                <Route path="/news" component={News}/>
                {/*<Route path="/news/:id" component={NewsDetail}/>*/}
                <Route path="/course" component={Course}/>
                <Route path="/joinUs" render={(props) => <JoinUs {...props}/>}/>
                <Route path="/error" render={(props) => <div><h1>404 Not Found!</h1></div>}/>
            </Switch>
        </div>
    </Router>
);
export default BasicRoute ;



Home.js

import React, {Component} from 'react';
import {Breadcrumb, Button, Layout, Menu} from "antd";
import {UserOutlined, LaptopOutlined, NotificationOutlined} from '@ant-design/icons';
import ComHeader from './common/Header'
import UserInfo from './user/UserInfo'
import { BrowserRouter as Router, Route, NavLink,Link } from "react-router-dom";
const {SubMenu} = Menu;
const {Header, Content, Sider} = Layout;
export default class Login extends Component {
 constructor(props) {
     super(props);

     this.state = {
         userInfo: {}
     };
 }

render() {
let { match } = this.props;
return (
<Router>
<div>
<div>
<Layout>
<Header className="header">
    {/*导航栏外部组件*/}
    <ComHeader/>
</Header>
<Layout>
    <Sider width={200} className="site-layout-background">
        <Menu
            mode="inline"
            defaultSelectedKeys={['1']}
            defaultOpenKeys={['sub1']}
            style={{height: '100%', borderRight: 0}}
        >
            <SubMenu key="sub1" icon={<UserOutlined/>} title="用户管理">
                <Menu.Item key="1">
                    <Link to="/userInfo">用户信息</Link>
                </Menu.Item>
                <Menu.Item key="2">
                    <Link to="/authority">权限信息</Link>
                </Menu.Item>
            </SubMenu>
            <SubMenu key="sub2" icon={<LaptopOutlined/>} title="subnav 2">
                <Menu.Item key="5">option5</Menu.Item>
                <Menu.Item key="6">option6</Menu.Item>
            </SubMenu>
            <SubMenu key="sub3" icon={<NotificationOutlined/>} title="subnav 3">
                <Menu.Item key="9">option9</Menu.Item>
                <Menu.Item key="10">option10</Menu.Item>
            </SubMenu>
        </Menu>
    </Sider>
    <Layout style={{padding: '0 24px 24px'}}>
        {/*面包屑区域*/}
        <Breadcrumb style={{margin: '16px 0'}}>
            <Breadcrumb.Item>Home</Breadcrumb.Item>
            <Breadcrumb.Item>List</Breadcrumb.Item>
            <Breadcrumb.Item>App</Breadcrumb.Item>
</Breadcrumb>
<Content
    className="site-layout-background"
    style={{
        padding: 24,
        margin: 0,
        minHeight: 280,
    }}
>
{/*内容区域*/}
<Route exact path="/userInfo" component={UserInfo} />
</Content>
</Layout>
</Layout>
</Layout>
</div>
</div>
</Router>

)
}

}

上一篇:react路由使用以及封装

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值