使用React能讓前端開發(fā)人員用更少、更安全的代碼來構(gòu)建更可靠、更強(qiáng)大的應(yīng)用程序。本書分為兩部分,全面介紹了React的相關(guān)主題。第一部分通過例子循序漸進(jìn)地講解基礎(chǔ)知識,包括創(chuàng)建一個投票應(yīng)用程序、編寫組件、處理用戶交互、管理富表單,以及與服務(wù)器交互,此外還探索了Create React App的工作原理,編寫自動化單元測試,以及使用客戶端路由構(gòu)建多頁面應(yīng)用程序。第二部分探討在大型應(yīng)用程序產(chǎn)品中使用的更高級的概念——數(shù)據(jù)的架構(gòu)、傳輸和管理的策略,講解了Redux、GraphQL、Relay,以及如何使用React Native編寫原生、跨平臺的移動應(yīng)用程序。書中每一章都配有示例代碼,有助于讀者鞏固所學(xué)。
		 
	
                                web開發(fā)人員需要考慮使用不同的代碼解決瀏覽器兼容性問題。 
React改變了這種局面,它不僅可以幫你為用戶創(chuàng)建良好的應(yīng)用程序,而且還可以讓你成為一名更出色的開發(fā)人員。 
本書介紹了React的整個生態(tài)系統(tǒng),包括React核心庫和許多工具。 
讀完本書后,你和你的團(tuán)隊將擁有構(gòu)建可靠且功能強(qiáng)大的React應(yīng)用程序所需的一切知識。 
本書不只是一本書,而且還可以當(dāng)作一門課程來學(xué)習(xí),每一章都配有示例代碼,提供源代碼下載 
本書能幫助你“一站式”獲取React的系統(tǒng)知識和正確工具,免去四處搜羅碎片化知識的煩惱,為前端開發(fā)打下堅實的基礎(chǔ)。 
 
創(chuàng)建自己的應(yīng)用程序——編寫組件,處理用戶交互,管理富表單,與服務(wù)器交互 
探索Create React App的工作原理,編寫自動化單元測試,使用客戶端路由構(gòu)建多頁面應(yīng)用程序 
探討數(shù)據(jù)的架構(gòu)、傳輸和管理策略——Redux、GraphQL和Relay 
使用React Native編寫原生、跨平臺的移動應(yīng)用程序            
安東尼·阿科馬佐(Anthony Accomazzo) 
現(xiàn)就職于Decode軟件公司,作者、編輯、顧問,有多年React與React Native研究經(jīng)驗,曾主導(dǎo)IFTTT API平臺開發(fā)。 
 
納特·默里(Nate Murray) 
全棧工程師,曾任IFTTT及AT&T工程師,擁有數(shù)據(jù)挖掘和增量Web服務(wù)等方面的背景。 
 
阿里·勒納(Ari Lerner) 
全棧工程師,F(xiàn)ullstack網(wǎng)站聯(lián)合創(chuàng)始人,AWS顧問。曾任AT&T軟件工程師與創(chuàng)新布道者,F(xiàn)ieldday聯(lián)合創(chuàng)始人。 
 
克萊·奧爾索普(Clay Allsopp) 
Plaid工程主管,Propeller聯(lián)合創(chuàng)始人,曾任LikeALittle工程師。 
 
大衛(wèi)·古特曼(David Guttman) 
AT&T高級研發(fā)工程師,Rollmob、AdNet、Interlincx Media等公司的首席技術(shù)官,Superstruct創(chuàng)始人,也是JS.LA等JavaScript活動的組織策劃者。 
 
泰勒·麥金尼斯(Tyler McGinnis) 
谷歌開發(fā)技術(shù)專家,Ui學(xué)習(xí)網(wǎng)站創(chuàng)始人,React.js項目的創(chuàng)作者,也是React.js Utah和ReactWeek等活動的組織策劃者。 
 
【譯者簡介】 
 
歐陽獎 
擁有多年前端管理經(jīng)驗,對前端技術(shù)發(fā)展有濃厚的興趣,目前為聯(lián)眾智慧科技股份有限公司的系統(tǒng)架構(gòu)師。
第 一部分 
第 1章 第 一個React Web應(yīng)用程序 2 
1.1 構(gòu)建Product Hunt項目 2 
1.2 設(shè)置開發(fā)環(huán)境 2 
1.3 針對Windows用戶的特殊說明 3 
1.4 JavaScript ES6/ES7 3 
1.5 開始 4 
1.6 什么是組件 8 
1.7 構(gòu)建Product組件 16 
1.8 讓數(shù)據(jù)驅(qū)動Product組件 18 
1.9 應(yīng)用程序的第 一次交互:投票事件響應(yīng) 26 
1.10 更新state和不變性 33 
1.11 用Babel插件重構(gòu)transform-class-properties 37 
1.12 祝賀你 41 
第 2章 組件 42 
2.1 計時器應(yīng)用程序 42 
2.2 開始 43 
2.3 將應(yīng)用程序分解為組件 46 
2.4 從頭開始構(gòu)建React應(yīng)用程序的步驟 50 
2.5 第(2)步:構(gòu)建應(yīng)用程序的靜態(tài)版本 52 
2.6 第(3)步:確定哪些組件應(yīng)該是有狀態(tài)的 58 
2.7 第(4)步:確定每個state 應(yīng)該位于哪個組件中 60 
2.8 第(5)步:通過硬編碼來初始化state 61 
2.9 第(6)步:添加反向數(shù)據(jù)流 68 
2.10 更新計時器 72 
2.11 刪除計時器 77 
2.12 添加計時功能 79 
2.13 添加啟動和停止功能 81 
2.14 方法回顧 86 
第3章 組件和服務(wù)器 87 
3.1 介紹 87 
3.2 server.js 87 
3.3 服務(wù)器API 88 
3.4 使用API 90 
3.5 從服務(wù)器加載狀態(tài) 92 
3.6 client 94 
3.7 向服務(wù)器發(fā)送開始和停止請求 97 
3.8 向服務(wù)器發(fā)送創(chuàng)建、更新和刪除請求 99 
3.9 下一步 100 
第4章 JSX和虛擬DOM 101 
4.1 React使用了虛擬DOM 101 
4.2 為什么不修改實際的DOM 101 
4.3 什么是虛擬DOM 101 
4.4 虛擬DOM片段 102 
4.5 ReactElement 102 
4.6 JSX 107 
4.7 參考文獻(xiàn) 113 
第5章 具有props、state和children的高級組件配置 114 
5.1 介紹 114 
5.2 如何使用本章 115 
5.3 ReactComponent 115 
5.4 props是參數(shù) 117 
5.5 PropTypes 118 
5.6 使用getDefaultProps()獲取默認(rèn)props 119 
5.7 上下文 120 
5.8 state 123 
5.9 無狀態(tài)組件 131 
5.10 使用props.children與子組件對話 133 
5.11 總結(jié) 137 
5.12 參考文獻(xiàn) 137 
第6章 表單 138 
6.1 表單101 138 
6.2 文本輸入 142 
6.3 遠(yuǎn)程數(shù)據(jù) 163 
6.4 異步持久性 171 
6.5 Redux 176 
6.6 表單模塊 185 
第7章 Webpack與Create React App結(jié)合使用 186 
7.1 JavaScript模塊 186 
7.2 Create React App 188 
7.3 探索Create React App 188 
7.4 Webpack基礎(chǔ) 196 
7.5 對示例應(yīng)用程序進(jìn)行修改 201 
7.6 創(chuàng)建生產(chǎn)構(gòu)建 202 
7.7 彈出 205 
7.8 Create React App和API服務(wù)器一起使用 207 
7.9 Webpack總結(jié) 216 
第8章 單元測試 218 
8.1 不使用框架編寫測試 218 
8.2 Jest是什么 226 
8.3 使用Jest 226 
8.4 React應(yīng)用程序的測試策略 232 
8.5 使用Enzyme測試基本的React組件 234 
8.6 為食物查找應(yīng)用程序編寫測試 256 
8.7 編寫FoodSearch.test.js 264 
8.8 進(jìn)一步閱讀 287 
第9章 路由 289 
9.1 URL中有什么 289 
9.2 構(gòu)建react-router組件 292 
9.3 使用React Router的動態(tài)路由 316 
9.4 支持身份驗證的路由 337 
9.5 回顧一下 348 
第二部分 
第 10章 Flux和Redux介紹 350 
10.1 Flux誕生的原因 350 
10.2 Flux實現(xiàn) 351 
10.3 Redux 352 
10.4 構(gòu)建一個計數(shù)器 352 
10.5 構(gòu)建store 358 
10.6 Redux的核心 361 
10.7 早期的聊天應(yīng)用程序 362 
10.8 構(gòu)建reducer()函數(shù) 365 
10.9 訂閱store 370 
10.10 將Redux連接到React 373 
10.11 下一步 380 
第 11章 Redux中間件 381 
11.1 準(zhǔn)備 381 
11.2 使用redux庫的createStore()函數(shù) 382 
11.3 將消息表示為處于狀態(tài)中的對象 383 
11.4 引入多線程387 
11.5 添加ThreadTabs組件 393 
11.6 在reducer中支持多線程 395 
11.7 添加OPEN_THREAD動作 404 
11.8 拆分reducer函數(shù) 407 
11.9 添加messagesReducer()函數(shù) 412 
11.10 在reducer中定義初始狀態(tài) 417 
11.11 使用redux的combineReducers()函數(shù) 420 
11.12 下一步 421 
第 12章 表示組件和容器組件與Redux一起使用 422 
12.1 表示組件和容器組件 422 
12.2 拆分ThreadTabs組件 424 
12.3 拆分Thread組件 428 
12.4 從App組件中移除store 433 
12.5 使用react-redux庫創(chuàng)建容器組件 434 
12.6 動作創(chuàng)建器 443 
12.7 總結(jié) 445 
第 13章 使用GraphQL 446 
13.1 第 一個GraphQL查詢 446 
13.2 GraphQL的好處 447 
13.3 GraphQL和REST 448 
13.4 GraphQL和SQL 449 
13.5 Relay 框架和GraphQL框架 450 
13.6 本章預(yù)覽 450 
13.7 使用GraphQL 451 
13.8 探索GraphiQL 451 
13.9 GraphQL語法 454 
13.10 復(fù)雜類型 458 
13.11 探索Graph 460 
13.12 圖節(jié)點 462 
13.13 viewer 463 
13.14 圖的連接和邊 464 
13.15 變更 467 
13.16 訂閱 468 
13.17 GraphQL和JavaScript結(jié)合使用 469 
13.18 GraphQL與React結(jié)合使用 470 
13.19 總結(jié) 471 
第 14章 GraphQL服務(wù)器 472 
14.1 編寫一個GraphQL服務(wù)器 472 
14.2 Windows用戶的特殊設(shè)置 472 
14.3 連接 496 
14.4 總結(jié) 512 
第 15章 經(jīng)典Relay 514 
15.1 介紹 514 
15.2 Relay是一個數(shù)據(jù)架構(gòu) 520 
15.3 Relay和GraphQL約定 520 
15.4 將Relay添加到應(yīng)用程序中 529 
15.5 BooksPage組件 545 
15.6 使用變更修改數(shù)據(jù) 554 
15.7 構(gòu)建圖書頁面 554 
15.8 變更 559 
15.9 總結(jié) 565 
15.10 參考資料 565 
第 16章 React Native 567 
16.1 初始化 568 
16.2 路由 569 
16.3  571 
16.4 Web組件與原生組件 576 
16.5 樣式 584 
16.6 HTTP請求 602 
16.7 什么是promise 602 
16.8 一次性使用保證 605 
16.9 創(chuàng)建新promise 605 
16.10 使用React Native進(jìn)行調(diào)試 606 
16.11 資料參考 608 
附錄A PropTypes(圖靈社區(qū)下載) 
附錄B ES6(圖靈社區(qū)下載) 
附錄C React Hook(圖靈社區(qū)下載) 
更新日志(圖靈社區(qū)下載)