react实战 系列(未完结,持续更新中...)

前言

学习 react 的方法,比较常规的是跟着官方文档边看边做,可是 react 的官网教程有点难(至少比 vue 的难),亦或买几本讲基础的或实战类型的 react 的书,可是 react 是一个生态圈,比如要学 react、es6、webpack、各种插件包、ui库(例如 antd)、路由(如 react-router-dom)、状态(如 Redux)等等, 得买几本?

再想想,我们最终目标:学会 react 开发

而目标的检验标准就是:能用 react 解决实际问题。比如做一个后台管理系统。

模仿是一个较好的学习方法。

最好找一个开源的 react 项目,不要太复杂,项目必须得优秀

笔者找的是 spug。此刻 github 上 star 是 7.2k。什么概念? bizcharts(阿里通用图表组件库) 此刻 star 是 5.8k,vuex 是 27k,lodash 是 56k,虽然比顶级的(react 的 star 是 186k)相差许多倍,但也能说明这个项目的优秀。

笔者将通过自己的角度,一边分析、一边进行二次开发,尽可能的模拟真实场景。

:倘若你会 vue,却是 react 新手,建议先看 七天接手react项目

环境准备

进入github spug,克隆项目到本地:

$ git clone git@github.com:openspug/spug.git spug-study
Cloning into 'spug-study'...
remote: Enumerating objects: 11954, done.
remote: Counting objects: 100% (4463/4463), done.
remote: Compressing objects: 100% (1323/1323), done.
remote: Total 11954 (delta 3358), reused 4133 (delta 3108), pack-reused 7491
Receiving objects: 100% (11954/11954), 5.19 MiB | 111.00 KiB/s, done.
Resolving deltas: 100% (8661/8661), done.

项目目录结构如下:

$ ll spug-study
total 48
drwxr-xr-x 1 78614 197609 0 4月 10 21:16 docs/
-rw-r--r-- 1 78614 197609 35184 4月 10 21:16 LICENSE
-rw-r--r-- 1 78614 197609 3732 4月 10 21:16 README.md
drwxr-xr-x 1 78614 197609 0 4月 10 21:16 spug_api/
drwxr-xr-x 1 78614 197609 0 4月 10 21:16 spug_web/

spug_api 是后端项目,前端只需关注 spug_web

$ cd spug-study/spug_web/

// 安装依赖
$ npm i
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated flatten@1.0.3: flatten is deprecated in favor of utility frameworks such as lodash.
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
... added 1787 packages, and audited 1788 packages in 2m 107 packages are looking for funding
run `npm fund` for details 32 vulnerabilities (1 low, 16 moderate, 14 high, 1 critical) To address issues that do not require attention, run:
npm audit fix To address all issues (including breaking changes), run:
npm audit fix --force Run `npm audit` for details.

vscode 终端中启动项目:

spug_web> npm run start

> spug_web@3.0.0 start
> react-app-rewired start ...
Compiled successfully! You can now view spug_web in the browser. Local: http://localhost:3000
On Your Network: http://192.168.85.1:3000 Note that the development build is not optimized.
To create a production build, use npm run build.

浏览器显示:

环境准备完毕。

目录

  1. 起步(mockjs、第一个模块、docusaurus)
  2. 我的仪表盘(bizcharts、antd、moment)
  3. react 的第一个组件
  4. React 的数据流和生命周期
  5. React 中的表单和路由的原理
  6. Redux

react实战 系列的更多相关文章

  1. react实战系列 —— 起步(mockjs、第一个模块、docusaurus)

    其他章节请看: react实战 系列 起步 本篇我们首先引入 mockjs ,然后进入 spug 系统,接着模仿"任务计划"模块实现一个类似的一级导航页面("My任务计划 ...

  2. react实战系列 —— 我的仪表盘(bizcharts、antd、moment)

    其他章节请看: react实战 系列 My Dashboard 上一篇我们在 spug 项目中模仿"任务计划"模块实现一个类似的一级导航页面("My任务计划") ...

  3. react实战 系列 —— React 的数据流和生命周期

    其他章节请看: react实战 系列 数据流和生命周期 如何处理 React 中的数据,组件之间如何通信,数据在 React 中如何流动? 常用的 React 生命周期方法以及开源项目 spug 中使 ...

  4. react实战系列 —— React 中的表单和路由的原理

    其他章节请看: react实战 系列 React 中的表单和路由的原理 React 中的表单是否简单好用,受控组件和非受控是指什么? React 中的路由原理是什么,如何更好的理解 React 应用的 ...

  5. React 实战系列:模块化

    本系列以实战为主,通过一个 TODO 应用来学习深入 React. 学习无捷径,唯一的办法就是 coding!coding!coding! 如有不足之处,欢迎大家批评指正,共同进步! 言毕,开始撸

  6. react实战系列 —— react 的第一个组件

    react 的第一个组件 写了 react 有一个半月,现在又有半个月没写了,感觉对其仍旧比较陌生. 本文分两部分,首先聊一下 react 的相关概念,然后不使用任何语法糖(包括 jsx)或可能隐藏底 ...

  7. React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发

    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发   2016/09/23 |  React Native技术文章 |  Sky丶清|  4 条评论 |  1 ...

  8. 从零开始react实战:云书签-1 react环境搭建

    总览篇:react 实战之云书签 本篇是实战系列的第一篇,主要是搭建 react 开发环境,在create-react-app的基础上加上如下功能: antd 组件库按需引入 ,支持主题定制 支持 l ...

  9. GitHub实战系列汇总篇

    基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...

  10. GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...

随机推荐

  1. 基于React开发的chatgpt网页版(仿chatgpt)

    在浏览github的时候发现了一个好玩的项目本项目,是github大神Yidadaa开发的chatgpt网页版,该开源项目是跨平台的,Web / PWA / Linux / Win / MacOS都可 ...

  2. vue3 路由页面返回时,恢复滚动条位置

    首先,路由必须是KeepAlive模式 <script setup lang="ts"> import { onActivated } from "vue&q ...

  3. [转帖]PostgreSQL 统计所有数据表各自的总行数

    一般来说,可以使用 count(*) 来获取具体某张表的总行数: SELECT count(0) FROM t_user; 如果想获得所有表的行数信息,可以使用以下 SQL 语句: SELECT re ...

  4. [转帖]lsblk命令详解

    https://www.cnblogs.com/ishmaelwanglin/p/11043918.html lsblk命令用来查看block设备的信息. 主要应用场景: 获取wwnid,获取块设备列 ...

  5. [转帖]【Redis】Redis中使用Lua脚本

    Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua具体语法参考:https://www.runoob. ...

  6. [转帖]ipset命令介绍与基本使用

    一. 介绍 ipset命令是用于管理内核中IP sets模块的,如iptables之于netfilter.ipset字面意思是一些IP地址组成一个集合(set).但是ipset用于用于存储IP地址,整 ...

  7. Windows设置一键安装Mysql数据库的方法

    Windows设置一键安装Mysql数据库的方法 前言 因为MySQL数据库的8126 65536 以及3072最大索引长度等问题 研发这边提交的补丁总是出现稀奇古怪的问题. mysql数据库又因为D ...

  8. ESXi6.5+vCenter6.5 CentOS7 虚拟机启动之后控制台黑屏的解决方案

    公司最近搬迁服务器, 服务器的地址都发生了变化, 发现部分机器总是黑屏无法使用, 想了一个坚决办法使服务器能够连接设置地址后使用. 1. 控制台开机. 2. 注意在开机五秒之内打开web控制台, 然后 ...

  9. 使用rpmbuild打包erlang和rabbitmq进行部署服务的方法

    使用rpmbuild打包erlang和rabbitmq进行部署服务的方法 背景说明 1. rabbitmq 是基于 erlang 开发的消息列队, 本身rabbitmq 自己不区分架构. 2. 但是e ...

  10. Linux bridge使用dummy接口调用IPVS的问题

    Linux bridge使用dummy接口调用IPVS的问题 在IPVS: How Kubernetes Services Direct Traffic to Pods一文中,作者给出了一个简单的组网 ...