Redux實戰 ( 簡體 字) |
作者:[美]馬克·加羅(Marc Garreau),威爾·福羅(Will Faurot) 著;黃金勝,王冬陽,熊建剛 譯 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 51519 詢問書籍請說出此書號!【有庫存】 NT售價: 340 元 |
出版日:7/1/2019 |
頁數:263 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302530336 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:自2015年年中發布以來,Redux引起了JavaScript世界的關注。從它作為會議演示的概念驗證和“只是另一個Flux實現”標簽的簡單開端,已經發展成為React應用程序中使用最廣泛的狀態管理解決方案。它也被Angular、Ember和Vue社區采用,并啟發了許多模仿品和衍生產品。 我最喜歡引用的一句話是,“Redux是一個通用框架,它提供了足夠結構化和足夠靈活性的平衡。因此,它為開發人員提供了一個平臺,可以讓他們為自己的用例構建自定義狀態管理,同時能夠重用圖形化調試器或中間件之類的東西。” 的確,Redux提供了一組基本的工具以供使用,并概述了組織應用程序更新邏輯的一般模式,最終由你來決定如何圍繞Redux構建應用程序。你可以設計應用程序的文件結構,編寫reducer邏輯,連接組件,并確定要在Redux上使用多少抽象。 Redux的學習曲線有時會很陡峭。對于來自面向對象語言的大多數開發人員來說,函數式編程和不可變性是不熟悉的概念。編寫另一個TodoMVC示例并沒有真正展示Redux的好處,也不能解決構建“真實”應用程序的問題。但最終的收益是值得的。能夠清楚地追蹤應用程序中的數據流并了解特定狀態變更的位置/時間/原因/方式是非常有價值的,并且良好的Redux使用方式最終會讓代碼在長期內更易于維護和可預測。 我大部分時間都是Redux維護人員,通過回答問題、改進文檔和撰寫教程博客來幫助人們學習Redux。在這個過程中,我看過數百種不同的Redux教程。有鑒于此,我非常樂意推薦將《Redux實戰》一書作為學習Redux的最佳資源之一。 通過《Redux實戰》一書,Marc Garreau 和Will Faurot寫了我希望自己寫的Redux書籍。它非常全面、實用,并且可以很好地為開發現實世界中的Redux應用程序講授許多關鍵的主題。我特別欣賞《Redux實戰》所涵蓋的領域,并不總是有明確的答案,如構建項目,通過列出利弊,讓讀者知道這是一個他們可能不得不自己決定的領域。 在當今快速發展的編程世界中,沒有一《Redux實戰》可以包羅有關工具的所有知識。但是,《Redux實戰》將為你打下堅實的基礎和對Redux基礎知識的理解——各部分如何結合,如何將這些知識用于實際應用程序,以及在何處尋找更多信息。我很高興看到《Redux實戰》出版,并期待你加入Redux社區!
Mark Erikon Redux核心維護者 |
內容簡介:● 在現有的 React 應用程序中使用 Redux ● 使用 redux-saga 庫處理副作用 ● 使用異步 action 處理 API ● React 和 Redux 應用程序的單元測試 |
目錄:第1章Redux介紹1 1.1什么是狀態2 1.2什么是Flux3 1.2.1action4 1.2.2dispatcher4 1.2.3store4 1.2.4視圖4 1.3什么是Redux4 1.3.1React和Redux5 1.3.23個原則6 1.3.2工作流6 1.4為什么要用Redux11 1.4.1可預測性11 1.4.2開發者體驗11 1.4.3可測試性11 1.4.4學習曲線11 1.4.5體積11 1.5何時應該使用Redux12 1.6Redux的備選方案12 1.6.1Flux的一些實現12 1.6.2MobX13 1.6.3GraphQL客戶端14 1.7本章小結14 第2章第一個Redux應用程序15 2.1創建一個任務管理應用程序16 2.2使用CreateReactApp17 2.3基本的React組件19 2.4重溫Redux架構21 2.5配置Reduxstore22 2.5.1整體和storeAPI22 2.5.2創建Reduxstore23 2.5.3tasksreducer24 2.5.4默認reducer狀態25 2.6使用react-redux連接Redux與React26 2.6.1添加Provider組件26 2.6.2將數據從Redux傳遞到React組件27 2.6.3容器組件和展示型組件29 2.7派發action29 2.8action創建器33 2.8.1使用action創建器34 2.8.2action創建器和副作用35 2.9使用reducer處理action36 2.10練習38 2.11解決方案39 2.11.1狀態下拉菜單39 2.11.2派發一個editaction40 2.11.3在reducer中處理action42 2.12本章小結43 第3章調試Redux應用程序45 3.1ReduxDevTools介紹46 3.2時間旅行調試47 3.3使用DevTools監視器可視化變更48 3.4實現ReduxDevTools49 3.5Webpack的作用51 3.6模塊熱替換52 3.6.1熱加載組件53 3.6.2熱加載reducer54 3.6.3模塊熱替換的局限性55 3.7使用ReactHotLoader維持局部組件狀態55 3.8練習55 3.9解決方案56 3.10本章小結57 第4章使用API59 4.1異步action60 4.2使用redux-thunk調用異步action62 4.2.1從服務器獲取任務62 4.2.2API客戶端66 4.2.3視圖action和服務器action67 4.3將任務保存到服務器68 4.4練習70 4.5解決方案71 4.6加載狀態72 4.6.1請求生命周期73 4.6.2添加加載指示符74 4.7錯誤處理78 4.8本章小結82 第5章中間件83 5.1初窺中間件84 5.2中間件的基礎知識85 5.3日志記錄中間件86 5.3.1創建日志記錄中間件86 5.3.2使用applyMiddleware注冊中間件88 5.4數據分析中間件89 5.4.1meta屬性89 5.4.2添加數據分析中間件90 5.4.3中間件的使用場合93 5.4.4案例分析:如何不使用中間件93 5.5API中間件95 5.5.1理想的API96 5.5.2概述API中間件98 5.5.3發起AJAX調用100 5.5.4更新reducer101 5.5.5API中間件總結102 5.6練習102 5.7解決方案102 5.8本章小結105 第6章處理復雜的副作用107 6.1什么是副作用108 6.2回顧thunk109 6.2.1優勢109 6.2.2不足110 6.3saga介紹110 6.3.1優勢111 6.3.2不足111 6.4生成器概述111 6.4.1生成器語法112 6.4.2迭代器113 6.4.3生成器循環113 6.4.4使用生成器的原因114 6.5實現saga115 6.5.1將saga中間件連接至store115 6.5.2根saga介紹116 6.5.3副作用118 6.5.4響應并派發action118 6.6處理長時間運行的進程121 6.6.1準備數據121 6.6.2更新用戶界面122 6.6.3派發action122 6.6.4編寫長時間運行的進程123 6.6.5處理reducer中的action124 6.6.6使用通道125 6.7練習127 6.8解決方案127 6.9其他的副作用管理策略128 6.9.1使用async/await異步函數129 6.9.2使用redux-promise處理promise129 6.9.3redux-loop129 6.9.4redux-observable130 6.10本章小結130 第7章為組件準備數據131 7.1將Redux與React組件解耦132 7.2選擇器概述134 7.3實現搜索135 7.3.1搭建UI136 7.3.2本地狀態與Redux狀態138 7.3.3派發過濾器action139 7.3.4在reducer中處理過濾器action141 7.3.5編寫自己的第一個選擇器142 7.4reselect介紹144 7.4.1reselect和memoization144 7.4.2reselect與composition146 7.5實現reselect146 7.6練習147 7.7解決方案148 7.8本章小結150 第8章組織Reduxstore151 8.1如何在Redux中存儲數據152 8.2規范化數據介紹154 8.3使用嵌套數據實現項目155 8.3.1概述:請求與渲染項目156 8.3.2使用項目數據更新服務器159 8.3.3添加和派發fetchProjects160 8.3.4更新reducer162 8.3.5更新mapStateToProps和選擇器164 8.3.6添加項目下拉菜單165 8.3.7編輯任務169 8.3.8非必要的渲染170 8.3.9總結——嵌套數據172 8.4規范化項目和任務172 8.4.1定義模式174 8.4.2更新reducer以處理實體175 8.4.3更新選擇器177 8.4.4創建任務178 8.4.5總結——規范化數據180 8.5組織其他類型的狀態180 8.6練習180 8.7解決方案180 8.8本章小結182 第9章測試Redux應用程序183 9.1測試工具介紹184 9.1.1Jasmine提供了什么186 9.1.2Jest提供什么187 9.1.3Jest的替代品188 9.1.4使用Enzyme進行組件 測試188 9.2測試Redux和React的區別189 9.3測試action創建器189 9.3.1測試同步action創建器190 9.3.2測試異步action創建器191 9.4測試saga193 9.5測試中間件195 9.6測試reducer198 9.7測試選擇器200 9.8測試組件202 9.8.1測試展示型組件202 9.8.2快照測試204 9.8.3測試容器組件206 9.9練習210 9.10解決方案211 9.11本章小結213 第10章性能215 10.1性能評估工具216 10.1.1性能時間線216 10.1.2react-addons-perf217 10.1.3why-did-you-update217 10.1.4React開發者工具218 10.2React優化219 10.2.1shouldComponent-Update219 10.2.2PureComponent220 10.2.3分頁和其他策略220 10.3Redux優化221 10.3.1連接正確的組件221 10.3.2自上而下的方法222 10.3.3將其他組件連接到Redux223 10.3.4將connect添加到Header和TasksPage225 10.3.5mapStateToProps和記憶型選擇器229 10.3.6connect高級用法的經驗法則230 10.3.7批量處理action231 10.4緩存233 10.5練習234 10.6解決方案236 10.7本章小結240 第11章組織Redux代碼241 11.1Rails風格模式242 11.1.1優勢243 11.1.2劣勢244 11.2域風格模式244 11.2.1優勢246 11.2.2劣勢246 11.3ducks模式246 11.3.1優勢249 11.3.2劣勢249 11.4選擇器249 11.5saga249 11.6樣式文件250 11.7測試文件250 11.8練習和解決方案250 11.9本章小結251 第12章React之外的Redux253 12.1移動Redux:ReactNative254 12.1.1處理副作用254 12.1.2網絡連接254 12.1.3性能255 12.2桌面Redux:Electron255 12.2.1需要原生桌面應用程序的原因255 12.2.2Electron的工作方式256 12.2.3引入Redux至Electron257 12.3其他Redux綁定258 12.3.1Angular258 12.3.2Ember259 12.4沒有框架的Redux260 12.5練習和解決方案260 12.6本章小結261 附錄安裝263 |
序: |