本書講述了React各個模塊基礎(chǔ)和進階用法,并提供了相應(yīng)的案例。還深入分析了React內(nèi)部運轉(zhuǎn)機制,同時詳細介紹了React配套的生態(tài)系統(tǒng)。本書共14章,包括邂逅React、了解JSX、React組件、React更新驅(qū)動、React生命周期、React狀態(tài)獲取與傳遞、工程化配置及跨平臺開發(fā)、React架構(gòu)設(shè)計、高性能React、React運行時原理探秘、玩轉(zhuǎn)React Hooks、React-Router、React-Redux狀態(tài)管理工具和React實踐。
本書適合具有一定React開發(fā)基礎(chǔ),但希望更加全面、深入理解React的前端開發(fā)者閱讀。
從用法到原理,從技術(shù)到實踐。
188個知識點,多維度講解React技術(shù)棧。
本書適合具有一定React開發(fā)基礎(chǔ),但希望更加全面、深入理解React的前端開發(fā)者閱讀。
前言
這本書講了什么
相信對于很多前端開發(fā)者來說,React庫并不陌生,很多前端開發(fā)者用React作為核心框架構(gòu)建前端應(yīng)用,但在周而復(fù)始的項目迭代過程中,難免會遇到技術(shù)的瓶頸期。這可能來源于:對于一些復(fù)雜的模塊,不知道怎樣更優(yōu)雅、更靈活、更有拓展性地去實現(xiàn);怎樣給React做性能優(yōu)化、封裝組件;對于React技術(shù)棧,不知道該怎樣突破、進階;搞不懂 React 的運行機制;筆者就曾經(jīng)歷過這樣的迷茫期,后來通過系統(tǒng)化復(fù)習(xí),先逐一突破React的各個模塊,再把各個模塊串聯(lián)到一起,才慢慢體驗到React的魅力,深入學(xué)習(xí)后,筆者發(fā)現(xiàn)了更多精彩的內(nèi)容。
寫這本書的目的就是把自己得到的經(jīng)驗分享給大家,希望大家在深入學(xué)習(xí)React的過程中,能將本書作為React學(xué)習(xí)的指南。下面是每一章的介紹。
在第1章中,將介紹目前React的地位和優(yōu)勢,以及React到底能解決什么問題。
在第2章中,將從JSX入手,介紹React表現(xiàn)形式,以及操作React Element對象,更方便地運用React,為深入React設(shè)計模式做技術(shù)鋪墊。
在第3章中,將重點介紹兩種類型的React組件,以及它們的特點、用法、通信方式、強化方式、高階組件的使用,讓開發(fā)者對React組件有一個更全面的認識。
在第4章中,會從驅(qū)動更新的源頭props和State說起,介紹State更新的特點,props的靈活使用,以及組合模式和render props模式。同時還會分析新老版本 React 的更新模式及更新特點,讓讀者更清晰地明確React更新流程。
在第5章中,將介紹React 生命周期的奧秘。在生命周期中,開發(fā)者到底能做什么事,應(yīng)該做什么事;函數(shù)組件如何彌補沒有生命周期的缺陷。
在第6章中,會講到如何獲取并傳遞狀態(tài),ref和Context的基本使用及高階用法,讓狀態(tài)的獲取和傳遞更加靈活自由。
在第7章中,會講到工程化配置、CSS模塊化、React 在服務(wù)端渲染和跨平臺開發(fā)中的地位,以及React 在多個技術(shù)方向上的優(yōu)勢。
在第8章中,將重點介紹React 架構(gòu)設(shè)計,從虛擬DOM到更新的設(shè)計,再到事件系統(tǒng)的設(shè)計,讓讀者知其然,知其所以然,真正理解React 為什么要這樣設(shè)計。
在第9章中,將從多個角度分析如何打造高性能的React 應(yīng)用,從多個方面研究React優(yōu)化手段。
在第10章中,將以應(yīng)用初始化和應(yīng)用更新為切入點,進入React應(yīng)用內(nèi)部,探索React內(nèi)部的運轉(zhuǎn)機制,從點到線再到面,全面解析React原理。
在第11章中,將介紹目前React V18版本的所有Hooks,以及基本用法和應(yīng)用場景,揭秘Hooks原理,以及如何設(shè)計一個自定義Hooks。
在第12章中,將以單頁面路由原理為起點,分析 React 中的路由是如何使用和實現(xiàn)的,以及新老版本路由的差異。
在第13章中,會介紹React中的狀態(tài)管理工具:Redux等,以及它們是如何運轉(zhuǎn)的,如何與React應(yīng)用完美契合的。
在第14章中,將用三個實踐來串聯(lián)前面的知識點,通過實踐來提升 React 的使用技巧,做到學(xué)以致用。
本書從基礎(chǔ)用法入手,到深入原理,再到項目實踐,從多個維度深入了解React,筆者相信,更深入的理解是為了使用更加便捷。
深入淺出React開發(fā)指南本書在講解React基礎(chǔ)和進階用法原理的基礎(chǔ)上,也提供了很多小的案例,對基礎(chǔ)知識點進行鞏固和強化。
適合人群
本書適合了解React基礎(chǔ)語法,接觸過React技術(shù)棧的前端開發(fā)者、JavaScript開發(fā)者,如果想要系統(tǒng)學(xué)習(xí)React,進階學(xué)習(xí)React技術(shù)棧,深入了解React運轉(zhuǎn)機制,那么這本書是一個不錯的選擇。
給讀者的建議
路漫漫其修遠兮,吾將上下而求索,希望閱讀這本書的每一位讀者,不要把掌握書中的知識點作為學(xué)習(xí)React的終點,而是要把它當(dāng)成學(xué)習(xí)的起點,帶著對React全新的認識去使用,在平時的工作中要多練習(xí),多學(xué)習(xí)一些React設(shè)計模式,多寫一些自定義 Hooks,嘗試寫一些高階組件。在 React 技術(shù)成長之路上披荊斬棘,勇往直前!
勘誤與支持
由于編者水平有限,書中難免有不妥之處,誠摯期盼同行、使用本書的讀者給予批評和指正。如果你有什么好的建議和意見,請通過出版社及時反饋給筆者。
致謝
感謝所有支持、鼓勵筆者堅持創(chuàng)作的朋友和粉絲們。
謹以此書,獻給所有熱愛React的朋友。在提升技術(shù)的道路上,我們一路同行。
趙林林,網(wǎng)名外星人,現(xiàn)任美團前端開發(fā)工程師,技術(shù)專家,熱愛前端技術(shù),掘金、知乎技術(shù)博主,精通React技術(shù),擅長React Native、小程序等跨端開發(fā)、大型應(yīng)用架構(gòu)設(shè)計、C端性能優(yōu)化等領(lǐng)域。
前言
第1章 邂逅React/
1.1React的優(yōu)勢分析/
1.2React 發(fā)展歷程/
第2章 了解JSX/
2.1認識JSX/
2.1.1JSX是什么/
2.1.2React.createElement/
2.1.3JSX 轉(zhuǎn)換邏輯/
2.1.4ReactElement對象/
2.2操作JSX/
2.2.1JSX與Element對象/
2.2.2Element方法集/
2.2.3Element對象持久化/
2.3JSX轉(zhuǎn)換Element對象流程/
2.3.1createElement原理揭秘/
2.3.2cloneElement原理揭秘/
2.4實踐:可控性渲染/
2.5Babel解析JSX/
2.5.1Babel插件/
2.5.2API層面模擬實現(xiàn)/
第3章 React組件/
3.1組件是什么/
3.1.1組件的定義/
3.1.2組件的特性/
3.2兩種類型的組件/
3.2.1類組件/
3.2.2函數(shù)組件/
3.3組件的通信方式/
3.3.1props和callback方式/
3.3.2eventBus事件總線/
3.3.3其他方式/
3.4組件的設(shè)計模式/
3.5組件的繼承/
3.5.1繼承模式的介紹/
3.5.2繼承模式實踐:編寫權(quán)限路由/
3.6高階組件(HOC)/
3.6.1什么是高階組件/
3.6.2高階組件解決了什么問題/
3.6.3高階組件之屬性代理/
3.6.4高階組件之反向繼承/
3.6.5高階組件功能/
3.6.6高階組件注意事項/
3.6.7高階組件實踐:渲染分片/
3.6.8高階組件功能總結(jié)/
第4章 React更新驅(qū)動/
4.1React 驅(qū)動源/
4.1.1誰在驅(qū)動React更新/
4.1.2React更新流/
4.2React props/
4.2.1props的概念及作用/
4.2.2props 的使用技巧/
4.3組合模式和 render props 模式/
4.3.1組合模式/
4.3.2實踐:組合模式實現(xiàn)tab和tabItem/
4.3.3render props模式/
4.4State驅(qū)動/
4.4.1類組件setState介紹/
4.4.2函數(shù)組件中的useState/
4.5主流框架批量更新模式/
4.5.1宏任務(wù)和微任務(wù)/
4.5.2微任務(wù)|宏任務(wù)實現(xiàn)批量更新/
4.5.3可控任務(wù)實現(xiàn)批量更新/
4.6兩種模式下的State更新/
4.6.1legacy模式和concurrent模式/
4.6.2老版本legacy模式下的更新/
4.6.3新版本concurrent模式下的更新/
4.6.4flushSync提高優(yōu)先級/
4.7外部數(shù)據(jù)源/
4.7.1什么是外部數(shù)據(jù)源/
4.7.2useSyncExternalStore介紹/
4.7.3useSyncExternalStore原理及其模擬/
第5章 React生命周期/
5.1生命周期介紹/
5.1.1生命周期意義及兩大階段/
5.1.2React生命周期及其特點/
5.2類組件生命周期/
5.2.1類組件初始化流程及其生命周期/
5.2.2類組件更新流程及其生命周期/
5.2.3類組件銷毀流程及其生命周期/
5.2.4commit階段細節(jié)補充/
5.3類組件生命周期的作用/
5.3.1類組件生命周期能做些什么/
5.3.2類組件渲染錯誤邊界/
5.4函數(shù)組件生命周期替代方案/
5.4.1useEffect和useLayoutEffect/
5.4.2useInsertionEffect/
5.4.3生命周期替代方案/
5.5實踐:實現(xiàn)ScrollView組件/
第6章 React狀態(tài)獲取與傳遞/
6.1ref 對象介紹/
6.2ref 使用及應(yīng)用場景/
6.2.1ref 的使用/
6.2.2forwardref 轉(zhuǎn)發(fā)ref/
6.2.3ref 其他應(yīng)用場景/
6.3Context 介紹/
6.3.1什么是Context/
6.3.2Context 解決了什么問題/
6.4新老版本Context/
6.4.1老版本Context/
6.4.2新版本Context/
6.4.3動態(tài)Context/
6.5Context 特性/
6.5.1嵌套多個Context/
6.5.2逐層傳遞Provider/
6.6Context實現(xiàn)切換主題功能/
第7章 工程化配置及跨平臺開發(fā)/
7.1React 環(huán)境搭建/
7.1.1環(huán)境搭建/
7.1.2create-react-app創(chuàng)建項目/
7.2CSS模塊化/
7.2.1為什么要用CSS模塊化/
7.2.2CSS模塊化之CSS Modules/
7.2.3CSS模塊化之CSS IN JS/
7.2.4CSS模塊化總結(jié)/
7.3React服務(wù)端渲染/
7.3.1React SSR流程分析/
7.3.2React SSR框架Next.js/
7.4React Native跨平臺開發(fā)/
7.4.1從JS引擎到JSI/
7.4.2React Native簡介/
第8章 React架構(gòu)設(shè)計/
8.1虛擬DOM與fiber/
8.1.1虛擬DOM/
8.1.2React fiber/
8.2fiber架構(gòu)/
8.2.1fiber樹的構(gòu)成/
8.2.2fiber樹的創(chuàng)建流程/
8.2.3fiber樹的更新流程/
8.3React中的位運算/
8.3.1為什么要用位運算/
8.3.2React位掩碼場景更新優(yōu)先級/
8.3.3React位掩碼場景更新上下文/
8.3.4React位掩碼場景更新標(biāo)識/
8.4React數(shù)據(jù)更新架構(gòu)設(shè)計/
8.4.1React更新前置設(shè)計/
8.4.2React更新后置設(shè)計/
8.5React事件系統(tǒng)設(shè)計/
8.5.1React事件系統(tǒng)介紹/
8.5.2事件系統(tǒng)設(shè)計/
8.5.3新老版本事件系統(tǒng)差異/
第9章 高性能React/
9.1React內(nèi)部更新調(diào)優(yōu)/
9.1.1調(diào)和優(yōu)化手段/
9.1.2diff算法/
9.2React外部渲染控制/
9.2.1React渲染本質(zhì)/
9.2.2React渲染控制手段/
9.2.3對React渲染的思考/
9.3任務(wù)調(diào)度/
9.3.1為什么要使用異步調(diào)度/
9.3.2Scheduler核心實現(xiàn)/
9.4過渡更新任務(wù)/
9.4.1Transition使命/
9.4.2Transition模擬場景/
9.4.3Transition具體實現(xiàn)/
9.4.4Transition實現(xiàn)原理/
9.5異步組件和懶加載/
9.5.1異步組件和Suspense/
9.5.2Suspense實現(xiàn)懶加載/
9.5.3Suspense和React.lazy原理實現(xiàn)/
9.5.4React V18 SuspenseList/
9.5.5hydrate模式下的Suspense新特性/
9.5.6Suspense未來可期/
9.6React海量數(shù)據(jù)處理/
9.6.1渲染切片/
9.6.2長列表優(yōu)化方案/
9.7React使用細節(jié)處理/
9.7.1React中的防抖和節(jié)流/
9.7.2React中的動畫/
9.7.3在React中防止