热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零开始使用react+AntDesign撸一个后台管理系统(一)

文章目录前言1.先来搭个架子—创建项目2.准备工作—装些工具路由和axiosCSS预处理器SCSS安装AntDesign3.开始写项目定义项目文件结构app.js进行布局nav侧边


文章目录

  • 前言
    • 1.先来搭个架子—创建项目
    • 2.准备工作—装些工具
      • 路由和axios
      • CSS预处理器SCSS
      • 安装Ant Design
    • 3.开始写项目
      • 定义项目文件结构
      • app.js进行布局
      • nav侧边导航


前言

从本篇开始,教大家从零开始使用react+Ant Design做一个后台管理系统,系列文章持续更新,完成之后会把代码发给大家学习参考,话不多说,直接开冲
如果react基础不太好的同学,可以看一下我的react专栏文章回顾一下基础知识:从零入门react系列


1.先来搭个架子—创建项目

这里使用react脚手架搭建项目,并且删掉初始乱七八糟的文件得到一个纯净的react项目
如果不知道怎么操作,查看 使用react脚手架快速搭建项目
下面默认大家已经创建并得到了纯净的react项目


2.准备工作—装些工具


路由和axios

yarn add -D react-router-dom axios # 用yarn安装路由和axios
npm i -D react-router-dom axios # 用npm安装路由和axios

CSS预处理器SCSS

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm i node-sass -D #不指定版本默认下载最新版,可以用@5.0.0指定版本

安装Ant Design

AntDesign是蚂蚁金服开源的一款react-ui的组件库,兼容性很不错,常用的浏览器以及IE11都兼容。(兼容IE11需要polyfiles,它是一个JS库,主要作用是解决兼容问题,解决不同浏览器之间对js实现的一个差异),它还支持服务端渲染(SSR)

cnpm i antd -D

3.开始写项目


定义项目文件结构

开始之前,我们先想好项目的一个布局,创建好文件夹和文件
1.定义components文件夹存放组件,目前内容为头部底部和导航栏
2.定义config文件夹存放目录的内容,因为先不接入接口,写一些死数据在里面
3.定义style文件夹,存放一些样式文件(默认样式,公共样式)
在这里插入图片描述


app.js进行布局

先把组件中的footer,header,nav文件下的index.js文件写一下,这里举一个例子:

import React, { Component } from &#39;react&#39;export class Index extends Component {render() {return (<div>我是footer</div>)}
}export default Index

然后在app.js中引入&#xff0c;进行布局&#xff1a;

import { Row, Col } from &#39;antd&#39;
import Nav from &#39;./components/nav&#39;
import Header from &#39;./components/header&#39;
import Footer from &#39;./components/footer&#39;
import &#39;./style/common.scss&#39;function App(){return (<div><Row className&#61;&#39;container&#39;><Col><Nav/></Col><Col><Header/><Row>我是内容区</Row><Footer/></Col></Row></div>)
}export default App;

查看效果&#xff0c;目前是这样的布局&#xff1a;
在这里插入图片描述


nav侧边导航

直接去Ant Design文档中查找想要的导航样式&#xff0c;教大家个小技巧&#xff1a;如果初学不会写&#xff0c;就把文档里面的案例copy下来&#xff0c;然后慢慢改成自己想要的形式

开始写导航栏&#xff1a;
1.首先要引入这里需要的组件&#xff0c;比如菜单Menu,图标SettingOutlined,还有SubMenu&#xff08;从Menu中结构出来&#xff09;。最后要把我们写好的导航栏数据引入进来menuConfig
2.在render中先写一下结构
3.定义获取菜单的方法&#xff0c;直接遍历&#xff0c;然后在componentDidMount生命周期中进行调用&#xff0c;并赋值
4.对于这里的遍历&#xff0c;逻辑就是有children的就继续往下遍历然后展示&#xff0c;没有children的就直接展示

nav/index.js:

import React, { Component } from &#39;react&#39;
import { Menu } from &#39;antd&#39;;
import menuConfig from &#39;../../config/menu&#39;;
import &#39;./index.scss&#39;
import { SettingOutlined } from &#39;&#64;ant-design/icons&#39;;const { SubMenu } &#61; Menu;export class index extends Component {state &#61; {menuItem: &#39;&#39;}componentDidMount() {let menuItem &#61; this.getMenuItem(menuConfig)// console.log(menuItem)this.setState({menuItem})}// 获取菜单方法,直接遍历getMenuItem &#61; (data) &#61;> {// console.log(data)return data.map(item &#61;> {if (item.children) {return <SubMenu key&#61;{item.key} title&#61;{item.title}>{item.children.map(items &#61;> {// console.log(items)return <Menu.Item key&#61;{items.key} title&#61;{items.title}>{items.title}</Menu.Item>})}</SubMenu>} else {return <Menu.Item key&#61;{item.key} title&#61;{item.title}>{item.title}</Menu.Item>}})}render() {return (<div className&#61;&#39;nav-left&#39;><h1>后台管理系统</h1><Menu mode&#61;"inline" theme&#61;"dark">{this.state.menuItem}</Menu></div>);}
}export default index

最后得到的看效果&#xff1a;

在这里插入图片描述

OK&#xff0c;本篇文章先带大家完成这么多&#xff0c;大家可以自己动手去试一试。
记得关注收藏&#xff0c;后面会继续带大家完成这个项目&#xff0c;最后也会把源码贴上来~
持续更新&#xff01;&#xff01;&#xff01;


推荐阅读
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
author-avatar
qinsg688_377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有