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. MySQL 04

    目录 python操作mysql mysql sql注入问题 问题描述 解决办法 增/删/改 查询 索引 基本概念 索引的原理 mysql索引种类 普通索引 唯一索引 联合索引 创建索引 正确使用索引 ...

  2. JS系列:js节点

    节点(node) 在html文档中出现的所有东西都是节点 元素节点(HTML标签) 文本节点(文字内容) 注释节点(注释内容) 文档节点(document) … 每一种类型的节点都会有一些属性区分自己 ...

  3. Java_零碎知识回顾

    封装的理解 1.隐藏实现细节,控制对象的访问权限:对外提供公共方法: 隐藏:private 本类可见 继承的理解 ①父类有共性的属性与方法:子类只需要继承,扩展自己独有的属性方法即可,实现了代码的可复 ...

  4. vs code:sync setting 插件

    sync setting 是同步设置插件 第一步:A机器上下载插件 第二步:通过git生成 token user(个人中心) --> Settings --> Developer sett ...

  5. JS内置对象-Array之splice-删插替

    splice-删除 var arr = [1, 2, 3, 4, 5, 6]; //删除 var delArr = arr.splice(1, 2) console.log(arr); // => ...

  6. Javascript 垃圾回收方法

    Javascript 垃圾回收方法 标记清除(mark and sweep) 这是 JavaScript 最常见的垃圾回收方式,当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为& ...

  7. Spring Ioc Configration - Annotation

    1.配置类注解@Configuration. 2.Bean注解 @Bean. 3.导入其他配置类@Import. 4.回调函数 @Bean(initMethod = "init", ...

  8. GenericServlet和HttpServlet有什么区别?

    1.HttpServlet 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReu ...

  9. 函数式编程 -> Lambda

    一.函数式编程 函数式编程,同面向对象编程.指令式编程一样,是一种软件编程范式,在多种编程语言中都有应用.百科词条中有很学术化的解释,但理解起来并不容易.不过,我们可以借助于数学中函数的概念,来理解函 ...

  10. html5 websocket 示例,websocket在线聊天,php websocket实例

    WebSocket在线测试工具 http://ws.douqq.com/ 1.连接格式为 ws://IP/域名:端口(示例ws://119.29.3.36:5354) 2.对于内网的测试环境,只需填入 ...