第 1章 React基礎 1
1.1 聲明式編程 2
1.2 React元素 3
1.3 忘掉所學的一切 5
1.4 常見誤解 7
1.5 小結 9
第 2章 整理代碼 10
2.1 JSX 10
2.1.1 Babel 11
2.1.2 Hello,World! 12
2.1.3 DOM元素與React組件 13
2.1.4 屬性 13
2.1.5 子元素 13
2.1.6 JSX與HTML的區(qū)別 14
2.1.7 展開屬性 17
2.1.8 JavaScript模板 17
2.1.9 常見模式 17
2.2 ESLint 25
2.2.1 安裝 25
2.2.2 配置 25
2.2.3 React插件 28
2.2.4 Airbnb的配置 29
2.3 函數(shù)式編程基礎 30
2.3.1 一等對象 30
2.3.2 純粹性 31
2.3.3 不可變性 31
2.3.4 柯里化 32
2.3.5 組合 33
2.3.6 函數(shù)式編程與UI 33
2.4 小結 33
第3章 開發(fā)真正可復用的組件 34
3.1 創(chuàng)建類 34
3.1.1 createClass工廠方法 35
3.1.2 繼承React.Component 35
3.1.3 主要區(qū)別 36
3.1.4 無狀態(tài)函數(shù)式組件 40
3.2 狀態(tài) 42
3.2.1 外部庫 43
3.2.2 工作原理 43
3.2.3 異步 44
3.2.4 React lumberjack 45
3.2.5 使用狀態(tài) 45
3.3 prop類型 48
3.4 可復用組件 51
3.5 可用的風格指南 54
3.6 小結 58
第4章 組合一切 59
4.1 組件間的通信 59
4.2 容器組件與表現(xiàn)組件模式 62
4.3 mixin 67
4.4 高階組件 69
4.5 recompose 72
4.6 函數(shù)子組件 76
4.7 小結 78
第5章 恰當?shù)孬@取數(shù)據 79
5.1 數(shù)據流 79
5.1.1 子組件與父組件的通信(回調函數(shù)) 81
5.1.2 公有父組件 82
5.2 數(shù)據獲取 83
5.3 react-refetch 88
5.4 小結 92
第6章 為瀏覽器編寫代碼 93
6.1 表單 93
6.1.1 自由組件 94
6.1.2 受控組件 98
6.1.3 JSON schema 100
6.2 事件 102
6.3 ref 104
6.4 動畫 108
6.5 可擴展矢量圖形 110
6.6 小結 113
第7章 美化組件 114
7.1 CSS in JavaScript 114
7.2 行內樣式 116
7.3 Radium 120
7.4 CSS模塊 124
7.4.1 Webpack 124
7.4.2 搭建項目 124
7.4.3 局部作用域的CSS 126
7.4.4 原子級CSS模塊 131
7.4.5 React CSS模塊 132
7.5 Styled Component 133
7.6 小結 136
第8章 服務端渲染的樂趣與益處 137
8.1 通用應用 137
8.2 使用服務端渲染的原因 138
8.2.1 SEO 138
8.2.2 通用代碼庫 139
8.2.3 性能更強 140
8.2.4 不要低估復雜度 140
8.3 基礎示例 141
8.4 數(shù)據獲取示例 146
8.5 Next.js 149
8.6 小結 151
第9章 提升應用性能 153
9.1 一致性比較與key屬性 153
9.2 優(yōu)化手段 158
9.2.1 是否要更新組件 158
9.2.2 無狀態(tài)函數(shù)式組件 160
9.3 常用解決方案 160
9.3.1 why-did-you-update 161
9.3.2 在渲染方法中創(chuàng)建函數(shù) 162
9.3.3 props常量 165
9.3.4 重構與良好設計 167
9.4 工具與庫 172
9.4.1 不可變性 172
9.4.2 性能監(jiān)控工具 173
9.4.3 Babel插件 174
9.5 小結 174
第 10章 測試與調試 176
10.1 測試的好處 176
10.2 用Jest輕松測試JavaScript 178
10.3 靈活的測試框架Mocha 184
10.4 React JavaScript測試工具 187
10.5 真實測試示例 189
10.6 React組件樹快照測試 195
10.7 代碼覆蓋率工具 198
10.8 常用測試方案 199
10.8.1 測試高階組件 199
10.8.2 頁面對象模式 203
10.9 Reactkai發(fā)者工具 206
10.10 React錯誤處理 207
10.11 小結 209
第 11章 需要避免的反模式 210
11.1 用prop初始化狀態(tài) 210
11.2 修改狀態(tài) 212
11.3 將數(shù)組索引作為key 215
11.4 在DOM元素上展開props對象 218
11.5 小結 219
第 12章 未來的行動 220
12.1 為React做貢獻 220
12.2 分發(fā)代碼 222
12.3 發(fā)布npm包 224
12.4 小結 225