# React.js 小书
[![License: CC BY-ND 4.0](https://img.shields.io/badge/License-CC%20BY--ND%204.0-blue.svg)](https://creativecommons.org/licenses/by-nd/4.0/legalcode)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
**转载请注明出处,保留原文链接以及作者信息**
在线阅读:[http://react.huziketang.com](http://react.huziketang.com)
## 简介
这是一本关于 React.js 的小书。
因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识、经验。于是把一些想法慢慢整理书写下来,做成一本开源、免费、专业、简单的入门级别的小书,提供给社区。希望能够帮助到更多 React.js 刚入门朋友。
由于水平有限,编写的过程难免会有诸多错误,也希望大家在看的过程中发现了问题,可以在 Github 上给该项目发 Pull Request。衷心希望可以有更多的人参与到本书的编写当中。
(本书的后续可能会做成视频版本,敬请期待。)
## 本书介绍
本书为有一点前端基础的并且是 React.js 零基础的同学而作,帮助他们掌握 React.js 并且灵活地把 React.js 应用到实际项目当中。如果你有一定的 HTML、CSS、JavaScript 基础并且希望学习 React.js,而又觉得 React.js 当中有些概念比难以接受和理解,希望能够从零开始学习,那么本书很适合你。但如果你已经对前端已经非常熟悉并且用过不少的前端框架和相关的组件化技术,建议你直接看官网文档。
本书并不会文档式地包含所有知识点,只会提炼实战经验中基础的、重要的、频繁的知识进行重点讲解,让你能用最少的精力深入了解实战中最需要的 React.js 知识和套路,轻装上路。如果需要更多更全面的知识点,可以参看更多的官方文档或者其他丰富的资料。
**另外,本书全书采用 ECMAScript 2015,阅读之前请确保自己已经掌握了 ECMAScript 2015 的基本语法,否则阅读起来会非常困难。**
本书初定分为三个阶段,每个阶段最后会有实战分析,把该阶段的知识点应用起来。
**第一个阶段**:希望能让读者掌握 React.js 的基本概念和基础知识。包括问题的根源:前端组件的复用性问题、数据和视图的同步问题。了解清楚问题以后再了解 React.js 的基础知识,包括 JSX、事件监听、state、props、列表渲染等。看看 React.js 是怎么解决这些问题的。这个阶段结束以后,读者就可以可以运用 React.js 构建简单的页面功能。
**第二个阶段**:让读者更进一步了解 React.js,包括组件生命周期及其含义、state 和 props 的进阶概念、props 验证及其意义、组件组合进阶、如何和 DOM 打交道、并且开始引入前端应用状态管理所存在的问题。
**第三个阶段**:让读者掌握 React.js 较为高级的概念,包括高阶组件、context。并且尝试引入 React-router、redux 来协助我们构建较为完整的前端应用;还会开始深入讨论前端应用状态管理的问题。
## 目录
**第一个阶段**
![](https://img.shields.io/badge/已完成-100%25-brightgreen.svg)
* Lesson 1 - [React.js 简介](http://react.huziketang.com/blog/lesson1)
* Lesson 2 - [前端组件化(一):从一个简单的例子讲起](http://react.huziketang.com/blog/lesson2)
* Lesson 3 - [前端组件化(二):优化 DOM 操作](http://react.huziketang.com/blog/lesson3)
* Lesson 4 - [前端组件化(三):抽象出公共组件类](http://react.huziketang.com/blog/lesson4)
* Lesson 5 - [React.js 基本环境安装](http://react.huziketang.com/blog/lesson5)
* Lesson 6 - [使用 JSX 描述 UI 信息](http://react.huziketang.com/blog/lesson6)
* Lesson 7 - [组件的 render 方法](http://react.huziketang.com/blog/lesson7)
* Lesson 8 - [组件的组合、嵌套和组件树](http://react.huziketang.com/blog/lesson8)
* Lesson 9 - [事件监听](http://react.huziketang.com/blog/lesson9)
* Lesson 10 - [组件的 state 和 setState](http://react.huziketang.com/blog/lesson10)
* Lesson 11 - [配置组件的 props](http://react.huziketang.com/blog/lesson11)
* Lesson 12 - [state vs props](http://react.huziketang.com/blog/lesson12)
* Lesson 13 - [渲染列表数据](http://react.huziketang.com/blog/lesson13)
* Lesson 14 - [实战分析:评论功能(一)](http://react.huziketang.com/blog/lesson14)
* Lesson 15 - [实战分析:评论功能(二)](http://react.huziketang.com/blog/lesson15)
* Lesson 16 - [实战分析:评论功能(三)](http://react.huziketang.com/blog/lesson16)
**第二个阶段**
![](https://img.shields.io/badge/已完成-100%25-brightgreen.svg)
* Lesson 17 - [前端应用状态管理 —— 状态提升](http://react.huziketang.com/blog/lesson17)
* Lesson 18 - [挂载阶段的组件生命周期(一)](http://react.huziketang.com/blog/lesson18)
* Lesson 19 - [挂载阶段的组件生命周期(二)](http://react.huziketang.com/blog/lesson19)
* Lesson 20 - [更新阶段的组件生命周期](http://react.huziketang.com/blog/lesson20)
* Lesson 21 - [ref 和 React.js 中的 DOM 操作](http://react.huziketang.com/blog/lesson21)
* Lesson 22 - [props.children 和容器类组件](http://react.huziketang.com/blog/lesson22)
* Lesson 23 - [dangerouslySetHTML 和 style 属性](http://react.huziketang.com/blog/lesson23)
* Lesson 24 - [PropTypes 和组件参数验证](http://react.huziketang.com/blog/lesson24)
* Lesson 25 - [实战分析:评论功能(四)](http://react.huziketang.com/blog/lesson25)
* Lesson 26 - [实战分析:评论功能(五)](http://react.huziketang.com/blog/lesson26)
* Lesson 27 - [实战分析:评论功能(六)](http://react.huziketang.com/blog/lesson27)
**第三个阶段**
* Lesson 28 - [高阶组件(Higher-Order Components)](http://react.huziketang.com/blog/lesson28)
* ...
## 特别鸣谢
特别感谢以下朋友对本书所做的审校工作,给本书提出了很多宝贵的改进意见:
* [邝伟科](https://github.com/kuangwk/) - 腾讯 Web 前端工程师
* [杨海波](https://github.com/hipoyang/) - 百度 Web 高级前端工程师
* [谢军令](https://github.com/brucexiejunling/) - 天猫 Web 前端工程师
* [戴嘉华](https://github.com/livoras/) - 前微信 Web 前端工程师
## 联系作者
* 邮箱:huzidaha@126.com
* 知乎:[@胡子大哈](https://www.zhihu.com/people/hu-zi-da-ha)
* 专栏:[@前端大哈](https://zhuanlan.zhihu.com/qianduandaha)
* 加入《React.js 小书》读者交流群,一起讨论、交流、学习前端技术。
<img width='256px' src='http://react.huziketang.com/assets/img/wechat-user.jpeg' />
## License
本作品采用 [署名-禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nd/4.0/legalcode) 进行许可
- 前言
- 第一阶段
- Lesson 1 - React.js 简介
- Lesson 2 - 前端组件化(一):从一个简单的例子讲起
- Lesson 3 - 前端组件化(二):优化 DOM 操作
- Lesson 4 - 前端组件化(三):抽象出公共组件类
- Lesson 5 - React.js 基本环境安装
- Lesson 6 - 使用 JSX 描述 UI 信息
- Lesson 7 - 组件的 render 方法
- Lesson 8 - 组件的组合、嵌套和组件树
- Lesson 9 - 事件监听
- Lesson 10 - 组件的 state 和 setState
- Lesson 11 - 配置组件的 props
- Lesson 12 - state vs props
- Lesson 13 - 渲染列表数据
- Lesson 14 - 实战分析:评论功能(一)
- Lesson 15 - 实战分析:评论功能(二)
- Lesson 16 - 实战分析:评论功能(三)
- 第二阶段
- Lesson 17 - 前端应用状态管理 —— 状态提升
- Lesson 18 - 挂载阶段的组件生命周期(一)
- Lesson 19 - 挂载阶段的组件生命周期(二)
- Lesson 20 - 更新阶段的组件生命周期
- Lesson 21 - ref 和 React.js 中的 DOM 操作
- Lesson 22 - props.children 和容器类组件
- Lesson 23 - dangerouslySetHTML 和 style 属性
- Lesson 24 - PropTypes 和组件参数验证
- Lesson 25 - 实战分析:评论功能(四)
- Lesson 26 - 实战分析:评论功能(五)
- Lesson 27 - 实战分析:评论功能(六)