1. 项目开发准备

  1. 描述项目
  2. 技术选型
  3. api 接口(4部分:3请求{url,请求方式,请求参数格式}, 1响应数据格式)/ 接口文档/ 测试接口

2. 启动项目开发

  1. 使用react脚手架创建项目
  2. 开发环境运行:  npm start
  3. 生产环境打包运行: npm run build     serve build

3. git管理项目

  1. 创建远程仓库
  2. 创建本地仓库
    1. 配置 .gitignore
    2.   git init
    3.   git add .
    4.  git commit -m "init"
  3. 将本地仓库推送到远程仓库
    1.   git remote add origin url
    2.   git push origin master
  4. 在本地创建dev分支,并推送到远程
    1.   gitcheckout -b dev
    2.   git push origin dev
  5. 如果本地有修改
    1.   git add.
    2.   git commit -m "xxx"
    3.   git push origin dev
  6. 新的同时:克隆仓库
    1.   git clone url
    2.   git checkout -b dev origin/dev
    3.   git pull origin dev
  7. 如果远程修改
    1.   git pull origin dev

4. 创建项目的基本结构

  api: ajax请求模块

  components: 非路由组件

  pages: 理由组件

  app.js: 应用的根组件

  index.js: 入口js

5. 引入antd

  下载antd包 ( npm i antd -d )

  按需打包:只打包import引入组件的js/css

      下载工具包 ( npm i react-app-rewired customize-cra babel-plugin-import )

      config-overrides.js

      package.jason

  自定义主题

      下载工具包 ( npm i less less-loader -d )

      config-overrides.js

  使用antd的组件

      根据antd的文档编写

6. 引入路由

  下载: react-router-dom  

  拆分应用路由:

    Login: 登陆

    Admin: 后台管理界面

  注册路由:

    <BrowserRouter>  //路由器

    <Switch>      //切换其中一个路由

    <Route path='' component={ }/>  //路由

7. Login的静态组件

  1. 自定义了一部分样式布局
  2. 使用antd的组件实现登陆表单界面
    1.   Form / Form.Item
    2.   Input
    3.   Icon
    4.   Button

8. 收集表单数据和表单的前台验证

  1. form 对象

    如何让包含<Form> 的组件得到form对象?

WrapLoginForm = Form.create()(LoginForm)

    WrapLoginForm是LoginForm的父组件,它给LoginForm传入form属性,用到了高阶函数和高阶组件的技术

  2. 操作表单数据

form.getFiledDecorator('标识名称', { initialValue:初始值,rules:[]})(<Input/>)包装表单项组件标签
form.getFieldsValue(); 得到包含所有输入数据的对象
form.getFieldValue(id); 根据标识得到对应字段输入的数据

  3. 前台表单验证

    1. 声明式实时表单验证

form.getFieldDecorator('标识名称',{rules:[{min:4,message:'错误提示信息'}]}) (<Input/>)

    2.自定义表单验证      

form.getFieldDecorator('标识名称',{rules:{validator:this.validatePwd}})(<Input/>)
      validatePwd = (rule,value,callback)=>{         if(问题) callback('错误提示') else callback()
      }

    3.点击提示时统一验证 

form.validateFields((error,values)=>{
if(!error){ 通过验证,发送ajax请求}
})

9. 高阶函数和高阶组件  

  1. 高阶函数
    1).一类特别的函数
      a).接受函数类型的参数
      b).函数返回值是函数
    2).常见
      a).定时器:setTimeout()/setInterval()
      b).Promise:Promise(()=>{}) then(value=>{},reason=>{})
      c).数组遍历相关的方法: forEach()/ filter()/ map()/ find()/ findindex()
      d).fn.bind() 本身是个函数,bind方法返回一个新的函数方法
      e).Form.create()() create函数能够包装组件,生成另外一个组件的新功能函数
      f).getFieldDecorator()()
    3).高阶函数更加动态,更加具有扩展性
  2. 高阶组件
    1).本质就是一个函数
    2).接收一个组件(被包装组件),返回一个新的组件(包装组件),包装组件会向被包装组件传入特定属性
    3).作用:扩展组件的功能
  3. 高阶组件也是高阶函数:接受一个组件函数,返回一个新的组件函数

  

react后台项目开发(一)的更多相关文章

  1. Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. 【共享单车】—— React后台管理系统开发手记:项目工程化开发

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  3. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  4. react实战项目开发(2) react几个重要概念以及JSX语法

    前言 前面我们已经学习了利用官方脚手架搭建一套可以应用在生产环境下的React开发环境.那么今天这篇文章主要先了解几个react重要的概念,以及讲解本文的重要知识JSX语法 React重要概念 [思想 ...

  5. 【共享单车】—— React后台管理系统开发手记:AntD Form基础组件

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  6. 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  7. react实战项目开发(1) 搭建react开发环境初始化项目(Create-react-app)

    前言 Create React App npm install -g create-react-app create-react-app my-app cd my-app npm start 执行命令 ...

  8. 【共享单车】—— React后台管理系统开发手记:Redux集成开发

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  9. 【共享单车】—— React后台管理系统开发手记:权限设置和菜单调整(未完)

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

随机推荐

  1. Python3 面向对象进阶2

    目录 Classmethod Staticmethod Isinstance Issubclass 反射 概念 hasattr getattr setattr delattr 魔法方法 概念 __ne ...

  2. 插入排序 C&&C++

    (blog主要用于展示算法流程) 插入排序算法:通过对未排序的数据逐个插入合适的位置而完成排序工作       流程: (1)先对数组前两个数据进行从小到大排序 (2)将第三个数据与前两个数据比较,将 ...

  3. IDEA+Maven 整合SSM框架实现简单的增删改查(新手入门,傻瓜操作)

    原博客地址:https://blog.csdn.net/khxu666/article/details/79851070 选用SSM框架的原因在目前的企业级Java应用中,Spring框架是必须的.S ...

  4. 《Java基础知识》Java类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog { String name; int age; ...

  5. Vue之使用JsonView来展示Json树

    前两天干活儿有个需求,在前端需要展示可折叠的Json树,供开发人员查看,这里采用JsonView组件来实现,它是一款用于展示Json的Vue组件,支持大体积的Json文件快速解析渲染,下面记录一下实现 ...

  6. [ASP.NET Core 3框架揭秘] 依赖注入[10]:与第三方依赖注入框架的适配

    .NET Core具有一个承载(Hosting)系统,承载需要在后台长时间运行的服务,一个ASP.NET Core应用仅仅是该系统承载的一种服务而已.承载系统总是采用依赖注入的方式来消费它在服务承载过 ...

  7. ssm集成(maven)& 分模块开发--详细教程

    1 maven版本的ssm 1.1 最简单的版本步骤: (1) 创建maven web项目 (2) 在pom.xml中导入依赖的jar包 (3) 再写配置文件: web.xml <!DOCTYP ...

  8. 使用SQL生成指定数据库的数据字典(MSSQL)

    USE DBNAME --指定要生成数据字典的数据库 GO SELECT 表名= CASE WHEN a.colorder= 1 THEN d.name ELSE '' END, 表说明= CASE ...

  9. react---css3动画 react-transition-group的使用

    react中可以通过state状态值来控制类名,来达到动画效果 父组件代码: import React from 'react'; import SubComponent from "./s ...

  10. 使用 Redis 进行阅读数统计并定时持久化

    之前,统计每篇博文的阅读数的方式是经过筛选去重之后直接更新数据库,并发压力直接传导到数据库,假设1秒有1000个并发请求,传统方案会在1秒内并发进行1000次数据库更新操作. 为了降低数据库的并发压力 ...