书里的demo都是15.3.2以下版本的,有些demo用最新的react 16.x版本会报错,安装包的时候记得改一下版本
第一章 React 基础
命令式编程描述代码如何工作,而声明式编程则表明想要实现什么目的
第二章 整理代码
展开属性操作符也是一项很重要的特性
{...props}
常见模式
1. 多行书写
2. 多个属性的书写
3. 条件语句
render-if包
4. 循环
map
5. 控制语句
jsx-control-statements
6. 次级渲染
拆分组件
ESLint
.eslintrc 文件
插件 eslint-plugin-react eslint-config-airbnb eslint@^2.9.0 eslint-pluginjsx-a11y@^1.2.0 eslint-plugin-import@^1.7.0 eslint-plugin-react@^5.0.1
函数式编程基础
纯粹函数是指它不产生副作用,也就是说它不会改变自身作用域以外的任何东西。
函数不会修改变量值,而是创建新的变量,赋新值后再返回变量。操作数据的这种方式称为不可变性。
柯里化
函数(和组件)可以结合产生新函数,从而提供更高级的功能与属性。
第三章 开发真正可复用的组件
1.props
2.state
解决函数绑定问题的最佳方案是在构造器内进行绑定操作,这样即使多次渲染组件,它也不会发生任何改变。
3.无状态函数式组件,没有state
this 在无状态函数式组件的执行过程中不指向组件本身。
无状态函数式组件只接收props(以及上下文)参数,并返回相应元素。
没有提供任何像componentDidMount 这样的生命周期钩子
setState 方法是异步的
propTypes,类型校验
可复用组件
react-docgen
可用的风格指南
react-storybook 包:@kadira/react-storybook-addon-info
第四章 组合一切
4.1 组件间的通信
props
children 是一个特殊的prop,拥有者组件可以将它传递给渲染方法内定义的组件。
4.2 容器组件与表现组件模式
容器组件:
更关心行为部分;
负责渲染对应的表现组件;
发起API 请求并操作数据;
定义事件处理器;
写作类的形式。
表现组件:
更关心视觉表现;
负责渲染HTML 标记(或其他组件);
以props 的形式从父组件接收数据;
通常写作无状态函数式组件。
4.3 mixin
mixin 只能和createClass 工厂方法搭配使用
4.4 高阶组件
高阶组件其实就是函数,它接收组件作为参数,对组件进行增强后返回。
4.5 recompose
context 16.x有了很大的更改
4.6 函数子组件
const Name = ({ children }) => children('World')
Name.propTypes = {
hildren: React.PropTypes.func.isRequired,
}
<Name>
{name => <div>Hello, {name}!</div>}
</Name>
第五章 恰当地获取数据
5.1 数据流
单向数据流
5.1.1 子组件与父组件的通信(回调函数)
每当子组件需要向父组件推送数据或者通知父组件发生了某个事件时,可以传递回调函数,同时将其余逻辑放在父组件中。
5.2 数据获取
用于获取数据的代码可以放在两个生命周期钩子中:componentWillMount 和component-DidMount。
5.3 react-refetch
第六章 为浏览器编写代码
6.1 表单
6.1.1 自由组件
6.1.2 受控组件
6.1.3 JSON schema
react-jsonschema-form
6.2 事件
命名事件处理器函数的最流行做法就是事件名前加上handle 前缀(如handleKeyDown)。
如果需要为同一个组件创建新的事件处理器,无须创建新的方法并绑定,只要在switch 语句中增加一个事例即可。
React 实际做的是在根元素上添加单个事件处理器,由于事件冒泡机制,这个处理器会监听所有事件。当浏览器触发我们想要的事件时,React 会代表相应组件调用处理器。这个技巧称作事件代理,可以优化内存和速度。
6.3 ref
表单用得多
6.4 动画
react-addons-css-transition-group react-motion
第七章 美化组件
7.1 CSS in JavaScript
7.2 行内样式
7.3 Radium
7.4 CSS 模块
react-css-modules
!! 7.5 Styled Component
这个库的另一项绝佳特性是主题。将组件封装在ThemeProvider 组件中,可以为组件树注入主题属性,当要和其他组件共享一部分样式,剩下部分取决于当前选中主题时,创建UI 会变得非常方便。
第八章 服务端渲染的乐趣与益处
8.1 通用应用
同构应用就是指应用在服务端和客户端看起来一模一样。
8.2 使用服务端渲染的原因
8.2.1 SEO
8.2.2 通用代码库
8.2.3 性能更强
8.2.4 不要低估复杂度
8.5 Next.js
第九章 提升应用性能
9.1 一致性比较与key 属性,key要唯一的
9.2 优化手段
shouldComponentUpdate
它的用法很直观,创建组件类时继承React.PureComponent 来代替React.Component即可。
9.2.2 无状态函数式组件
9.3 常用解决方案
9.3.1 why-did-you-update 好像没有用了
9.3.2 在渲染方法中创建函数
9.3.3 props 常量
9.3.4 重构与良好设计
9.4 工具与库
immutable.js
9.4.2 性能监控工具
chrome-react-perf
react-perf-tool
9.4.3 Babel 插件
babel-plugin-transform-react-inline-elements
第十章 测试与调试
Jest
Mocha
TestUtils 和Enzyme
测试React 组件的方式一般有两种:
浅渲染;
将组件挂载到独立DOM中。
10.8 常用测试方案
10.8.1 测试高阶组件
10.8.2 页面对象模式
10.10 React 错误处理
react-component-errors
第十一章 需要避免的反模式
11.1 用prop 初始化状态
如果我们真的想要用属性值初始化组件,并且可以肯定这些值未来不会改变呢?
这种情况下,最好阐明这种做法的用意,并为属性起一个能清楚表达含义的名称
11.2 修改状态
首先,如果不通过setState 修改状态,则会出现两种糟糕的情况:
状态改变不会触发组件重渲染;
以后无论何时调用setState,之前修改的状态都会渲染到页面上。
11.3 将数组索引作为key
11.4 在DOM 元素上展开props 对象
第十二章 未来的行动
12.3 发布npm 包
npm publish
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- CSS笔记--选择器
CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...
- HTML+CSS笔记 CSS中级 一些小技巧
水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...
- HTML+CSS笔记 CSS中级 颜色&长度值
颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- HTML+CSS笔记 CSS入门续集
继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...
- HTML+CSS笔记 CSS入门
简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...
随机推荐
- Touch事件在移动端web开发中的详解
一.pc端事件回顾 HTML事件.DOM0事件.DOM2事件 事件对象. 如果上述概念不清楚,请先去了解. 二.移动端事件简介 2.1 pc端事件在移动端的问题 移动设备主要特点是不配备鼠标,键盘 ...
- 【分享】【原创开源应用第4期】给ili9488,RA8875类显示屏的emWin底层增加DMA加速方案
说明:1.emWin底层中最重要的一个优化就是16bpp绘制,特此为其增加DMA加速,已经支持RA8875和ili9488.2.使用中务必将emWin任务设置为除了空闲任务,统计任务以外的最低优先级, ...
- FFmpeg 结构体学习(七): AVIOContext 分析
在上文FFmpeg 结构体学习(六): AVCodecContext 分析我们学习了AVCodec结构体的相关内容.本文,我们将讲述一下AVIOContext. AVIOContext是FFMPEG管 ...
- [Swift]LeetCode943. 最短超级串 | Find the Shortest Superstring
Given an array A of strings, find any smallest string that contains each string in A as a substring. ...
- java中this和super关键字的使用
这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this ...
- HBase之CF持久化系列(续2)
正如上篇博文所说,在本节我将为大家带来StoreFlusher.finalizeWriter..如果大家没有看过我的上篇博文<HBase之CF持久化系列(续1)>,那我希望大家还是回去看一 ...
- 【java提高】---queue集合
queue集合 什么是Queue集合? 答:Queue用于模拟队列这种数据结构.队列通常是指“先进先出(FIFO)”的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素. 新元 ...
- 华为oj之质数因子
题目: 质数因子 热度指数:5143 时间限制:1秒 空间限制:32768K 本题知识点: 排序 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 ...
- Linux环境下tomcat的安装与使用
1.tomcat安装 1.1.前提条件: 需要准备一台Linux机器,我选择的是Ubuntu18. Linux机器上已经安装了JDK,使用java -version命令查看是否安装. stephen@ ...
- Chapter 5 Blood Type——3
Disappointment flooded through me as my eyes unerringly focused on his table. 当我的眼睛完全集中在他的桌上时,失望如洪水般 ...