react非常适合入门者学习使用的后台管理框架

本项目提供一个适合初学者的简洁后台管理UI界面,采用React、Ant Design等技术栈,详细介绍了项目结构、菜单配置及路由设置。通过配置router.js文件实现动态菜单,对axios进行封装简化API调用。
摘要由CSDN通过智能技术生成

项目简介

该项目提供一个非常简洁的后台管理ui界面,非常适合初学者学习使用。项目结构:
structure
项目地址:GitHub项目地址

技术栈

- react
- antd
- react-router-dom
- redux 相关依赖已配置好,需要的即用即可

菜单配置具体实现

菜单配置文件为config下的router.js文件,如下

const menuList = [
    {
        title: '首页',
        key: '/home',
        component: Home
    },
    {
        title: '导航1',
        key: '/from',
        children: [
            {
                title: '页面1',
                key: '/from/companyFrom',
                component: CompanyFrom
            },
            {
                title: '页面2',
                key: '/from/user',
                component: UserList
            },
            {
                title: '页面3',
                key: '/from/loadings',
            },
        ]
    },
    {
        title: '导航2',
        key: '/user',
        children: [
            {
                title: '页面1',
                key: '/user/login',
            },
            {
                title: '页面2',
                key: '/user/reg',
            }
        ]
    },
];
export default menuList;

其中title为菜单栏的标题,key为匹配路径,component为展示的组件。
若有其它需求可自行扩展属性,如添加一个display属性,作为是否在菜单栏显示

菜单栏配置

读取router.js文件,递归menuList配置导航栏的菜单名和对应链接

  renderMenu=(data)=>{
    return data.map((item)=>{
      if(item.children){
        return (
          <SubMenu title={item.title} key={item.key}>
            {this.renderMenu(item.children)}
          </SubMenu>
        )
      }
      return <Menu.Item title={item.title} key={item.key}><Link to={item.key}>{item.title}</Link></Menu.Item>
    })
  }

路由配置

在主页面main.jsx中,路由配置读取router.js配置文件,遍历获取path对应的component,
对定义了菜单但未定义组件的页面显示友好的开发中界面

 renderRouter = data => {
        data.forEach((item,index) => {

            if(item.children){// 如果子路由存在,渲染子路由
                this.renderRouter(item.children)
            }

            if (item.component) { // 如果组件属性存在。则渲染原本组件
                const router = <Route key = {index} path = {item.key} component = {item.component}  />;

                let routerList = this.state.routerList;
                routerList.push(router)
                this.setState({
                    routerList
                })
            }else{ // 组件不存在就渲染页面开发中的友好组件
                const router = <Route key = {index} path = {item.key} component = {NoDevelopment} />;

                let routerList = this.state.routerList;
                routerList.push(router)
                this.setState({
                    routerList
                })
            }

        })
    }

axios封装配置

对axios请求进行封装,拼接post的请求参数到url后。具体配置文件在api目录下

运行界面

login
register
main
form
other

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值