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. Linux-(3)Linux Shell 使用

    三.Linux Shell 3.1 文件管理 3.1.1 ls 命令 显示指定工作目录下的内容及属性信息 ls 命令是Linux下最常用的指令之一.ls命令为英文单词 list 的缩写,正如英文单词 ...

  2. JS基础-BOM

    BOM BOM 是 browser object model 的缩写, 简称浏览器对象模型. 主要处理浏览器窗口和框架, 描述了与浏览器进行交互的方法和接口, 可以对浏览器窗口进行访问和操作, 譬如可 ...

  3. Mysql数据库优化一:集群(读写分离)之主从服务器的安装与配置

    Mysql数据库的集群(读写分离),说白了就是将读操作和写操作分开在不同的服务器上实现,以达到提高效率的目的. 大致原理如下: 数据库中的所有操作都是有日志记录的(前提是要打开这个日志记录功能) 1. ...

  4. ubuntu远程桌面软件vnc。

    http://www.linuxidc.com/Linux/2017-03/141936.htm 现在Linux是非常火的  很多人喜欢用它,界面简单,操作容易,有很多图形化工具如WinSCP可以与U ...

  5. Vmare 无法打开内核设备“\\.\VMCIDev\VMX”: 系统找不到指定的文件。您在安装 VMware Workstation 后是否进行了重新引导?的解决办法

    1.使用管理员省份运行cmd:net start vmx86(切记是要用管理员身份),启动服务成功问题即可解决. 2.若1操作中启动失败,则到Vmare安装目录下搜索vmx86.sys文件,并拷贝到C ...

  6. 【玩转SpringBoot】让错误处理重新由web服务器接管

    其实web服务器是会处理错误的 在web.xml还是随处可见的年代时(确实有点老黄历了),下面的这些配置应该都不陌生. 根据错误代码处理错误,如下图01: 根据异常类型处理错误,如下图02: 不过我们 ...

  7. CROSS-ENV不同环境配置

    项目背景 为了适应h5环境搭建需求,需要动态配置开发,测试,生产三种对应域名及其及打包命令.使用cross-env可以让配置环境更加清晰明了还好管理. 简介 cross-env的作用是不需要全局配置N ...

  8. javax.servlet.ServletException: Could not resolve view with name 'order/list' in servlet with name 'dispatcherServlet'

    javax.servlet.ServletException: Could not resolve view with name 'order/list' in servlet with name ' ...

  9. 让 Lua 访问数据库

    Lua 自身并没有提供访问数据库的函数,但是借助外部扩展库我们可以很容易实现对数据库的各种操作,下面就为大家介绍这样一个扩展库 - LuaSQL,你可以在下载区得到它. LuaSQL 定义了一套简单的 ...

  10. Hive脚本中切勿使用/**/注释

    Hive脚本中切勿使用/**/注释 Hive脚本的注释目前好像只有 -- ,我之前在做初版数据的时候 使用NotePad++ 习惯性的有时候注释会写成 /**/ ,然后就引发了问题 脚本上传到hue, ...