Layout布局实现一个简单的react管理后台

简介: Layout布局实现一个简单的react管理后台

今天下班之后把antd大致过了一遍,不得不说,还是挺好用的,前面对于react的知识点,该学习的也在慢慢的学习了,学完之后,打算做一个博客管理系统的后台。这里记录的就是大致的步骤。

1:首先使用一下Layout布局,把整个后台管理系统框架都已经写好了样式了,一下内容参考文档:


2:在home组件里面,新开一个模板,在模板里面引入 Layout布局的等

import { Layout, Menu, Breadcrumb, Icon } from 'antd';
const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;

3:引入路由和各个导航子菜组件

import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Echart from './Echart';
import Parent from './Parent';
import Child from './Child';
import Tab from './Tab';
import Nav from './Nav';
import About from './About';
import News from './News';
import Add from './Add';

4:将跳转的link放在导航菜单里面

<Menu.Item key="1"> <Link to="/echart">统计图</Link></Menu.Item>
                  <Menu.Item key="2"> <Link to="/parent">table统计图</Link></Menu.Item>
                  <Menu.Item key="3"><Link to="/child">树形菜单</Link></Menu.Item>

5:路由设置

在render()里面设置路由

把 Content换成路由指向的右侧的位置

                <Route exact path="/echart" component={Echart} />
                <Route exact path="/parent" component={Parent} />
                <Route exact path="/child" component={Child} />
                <Route exact path="/tab" component={Tab} />
                <Route exact path="/nav" component={Nav} />
                <Route exact path="/news" component={News} />
                <Route exact path="/about" component={About} />
                <Route exact path="/add" component={Add} />

6:具体代码参考

import React, { Component } from 'react';
import { Layout, Menu, Breadcrumb, Icon } from 'antd';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Echart from './Echart';
import Parent from './Parent';
import Child from './Child';
import Tab from './Tab';
import Nav from './Nav';
import About from './About';
import News from './News';
import Add from './Add';
const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;
class Laytest extends Component {
  constructor(props) {
    super(props);
    //react定义数据
    this.state = {
    }
  }
  render() {
    return (
      <Router>
        <Layout>
          <Header className="header">
            <div className="logo" />
            <Menu
              theme="dark"
              mode="horizontal"
              defaultSelectedKeys={['2']}
              style={{ lineHeight: '64px' }}
            >
              <Menu.Item key="1">nav 1</Menu.Item>
              <Menu.Item key="2">nav 2</Menu.Item>
              <Menu.Item key="3">nav 3</Menu.Item>
            </Menu>
          </Header>
          <Layout>
            <Sider width={200} style={{ background: '#fff' }}>
              <Menu
                mode="inline"
                defaultSelectedKeys={['1']}
                defaultOpenKeys={['sub1']}
                style={{ height: '100%', borderRight: 0 }}
              >
                <SubMenu
                  key="sub1"
                  title={
                    <span>
                      <Icon type="user" />
                      图表相关
                      </span>
                  }
                >
                  <Menu.Item key="1"> <Link to="/echart">统计图</Link></Menu.Item>
                  <Menu.Item key="2"> <Link to="/parent">table统计图</Link></Menu.Item>
                  <Menu.Item key="3"><Link to="/child">树形菜单</Link></Menu.Item>
                </SubMenu>
                <SubMenu
                  key="sub2"
                  title={
                    <span>
                      <Icon type="laptop" />
                      数据请求
                      </span>
                  }
                >
                  <Menu.Item key="5"> <Link to="/parent">表格</Link></Menu.Item>
                  <Menu.Item key="6"> <Link to="/child">树形控件</Link></Menu.Item>
                  <Menu.Item key="7"><Link to="/tab">Tab</Link></Menu.Item>
                  <Menu.Item key="8"><Link to="/nav">Nav</Link></Menu.Item>
                </SubMenu>
                <SubMenu
                  key="sub3"
                  title={
                    <span>
                      <Icon type="notification" />
                      ant组件
                      </span>
                  }
                >
                  <Menu.Item key="9"><Link to="/news">轮播图</Link></Menu.Item>
                  <Menu.Item key="10"><Link to="/about">卡片效果</Link></Menu.Item>
                  <Menu.Item key="11"><Link to="/add">add</Link></Menu.Item>
                  <Menu.Item key="12">option12</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
                style={{
                  background: '#fff',
                  padding: 24,
                  margin: 0,
                  minHeight: 280,
                }}
              >
                <Route exact path="/echart" component={Echart} />
                <Route exact path="/parent" component={Parent} />
                <Route exact path="/child" component={Child} />
                <Route exact path="/tab" component={Tab} />
                <Route exact path="/nav" component={Nav} />
                <Route exact path="/news" component={News} />
                <Route exact path="/about" component={About} />
                <Route exact path="/add" component={Add} />
              </Content>
            </Layout>
          </Layout>
        </Layout>
      </Router>
    )
  }
}
export default Laytest;

好了,一个简单的管理后台的样子都有了,点击不同的子菜单,右侧会显示不同的内容了,根据自己的项目需要去完善不同的组件吧。


相关文章
|
4月前
|
前端开发
使用 React Router v6 进行布局
【8月更文挑战第27天】
53 1
|
6月前
|
存储 前端开发 JavaScript
在React中有效地管理组件之间的通信和数据流
在React中有效地管理组件之间的通信和数据流
|
6月前
|
存储 前端开发 JavaScript
React中有效地使用props和state来管理组件的数据和行为
React中有效地使用props和state来管理组件的数据和行为
|
7月前
|
前端开发 JavaScript 开发者
在React中,如何利用生命周期方法管理组件的状态和行为?
【5月更文挑战第29天】在React中,如何利用生命周期方法管理组件的状态和行为?
58 3
|
7月前
|
前端开发 JavaScript
在React中,如何通过事件处理函数来管理按钮的点击行为?
【5月更文挑战第28天】在React中,如何通过事件处理函数来管理按钮的点击行为?
70 1
|
7月前
|
前端开发 JavaScript
在React中,如何通过事件处理函数来管理输入框的获取和失去焦点行为?
【5月更文挑战第28天】在React中,如何通过事件处理函数来管理输入框的获取和失去焦点行为?
292 1
|
7月前
|
前端开发
探索React Hooks:一种全新的组件逻辑管理方式
React Hooks是React 16.8版本引入的一项新功能,它改变了我们编写React组件的方式。本文将从Hooks的起源讲起,逐步分析Hooks的优势,并通过具体示例展示Hooks在组件逻辑管理中的应用,旨在帮助读者更好地理解和运用React Hooks。
|
7月前
|
资源调度 前端开发 JavaScript
React Router:React应用的路由管理
【4月更文挑战第25天】React Router是React的官方路由库,用于管理SPA的路由。它基于组件,将URL映射到React组件,核心概念包括路由、链接和导航。设置路由时,在根组件中使用BrowserRouter或HashRouter,包裹Routes组件,定义Route规则。Link组件用于创建内部链接,实现导航。高级特性包括嵌套路由、参数化路由和编程式导航,如子路由、动态参数和JavaScript控制的导航。掌握React Router能帮助开发者更高效地构建复杂的React应用。
|
7月前
|
前端开发 JavaScript API
React的Context API:全局状态管理的利器
【4月更文挑战第25天】React的Context API解决了深层组件间状态共享的难题,提供全局状态管理方案。通过`Provider`和`Consumer`组件,或结合`useContext` Hook,实现状态在组件树中的传递。最佳实践包括避免过度使用,分离逻辑,以及在必要时与Redux或MobX结合。Context API简化了数据传递,但需谨慎使用以保持代码清晰。
|
7月前
|
前端开发 JavaScript
React中的状态管理:useState与useReducer的使用与探讨
【4月更文挑战第25天】本文探讨了React中构建动态界面的关键——状态管理,重点关注`useState`和`useReducer` Hook。`useState`适用于简单状态管理,例如计数器,而`useReducer`在处理复杂逻辑和多个状态更新时更具优势,提供更好的组织和可维护性。选择使用哪个取决于状态逻辑复杂度、可维护性和性能需求。合理运用这两个工具能实现高效、可维护的React应用。