More Related Content
Similar to Redux+react js (20)
Redux+react js
- 5. Redux作者
• 作者: Dan Abramov
• 居住地: London, UK
• 目前在Facebook服務
• Github網址: https://github.com/gaearon
• Redux免費教學:
https://egghead.io/series/getting-started-with-
redux
- 12. Redux元件 – Action Creator
• Action Creator本體是一個Js函數,其回傳一個Action物件
• Action物件是一個原生的Js物件,但其必定要有一個type屬性,其餘
屬性可以依需求添加
• Action會成為Reducer的輸入參數
Action Creator範例
Action物件
- 13. Redux元件-Reducer
• 本身為一個單純的Js函數,但其有固定的兩個輸入參數:
• State: 初始狀態物件
• Action: ActionCreator所產生的Action物件
• Reducer僅處理狀態的變更,並且在函數執行的最後回傳新的狀態
物件
(建議使用Object.assign這個es6的功能來處理)
• Reducer可以是僅專注在處理狀態物件中某些屬性,也可以在其中
撰寫Switch-case;依action的type值,而進行不同的處理
• 當有多個Reducer時,可以使用combineReducers將它們合併成一個
- 14. Redux元件-Reducer範例
1. State : Store的當前狀態物件
2. Action : 由Component傳遞來的action物件
3. Action.type : action的類型
4. New State : 以Object.assign回傳新的物件
1 2
3
4
- 15. Redux元件-Store
• Store掌控狀態物件
• 一個Redux系統僅只有一個Store; Action Creator和Reducer都是多個
• Store提供3個API:
• API : getState() – 取得當前Store中的狀態
• API : subscribe(FnLis) – 註冊Store狀態改變的傾聽器(Listener)
• API : dispatch – 提供與Redux結合的前端框架資料流觸發的關鍵函數
• Store是靠createStore這個函數所創建,其輸入參數為:
• Reducer
• Initial State Object(初始狀態物件)
- 25. 討論一: 同步/非同步
• 在Modern WebSite中,在前端使用Ajax呼叫後端API來取得資料,成
為了一門顯學
• 若要能夠讓React-Redux可以處理Ajax的非同步處理,需要從Redux
的Middleware(中間層)著手
• 這一切都是因為Redux的Store預設上是僅能接受Js原生物件,若是
非同步處理,勢必會遇見Promise物件或是特定的處理方式,這是原
始Redux所不能相容的…
- 34. 討論二: SPA
• 在Google Mail之後,幾乎很多網站都傾向以SPA(Single Page
Application)的方式來撰寫網站
• ReactJs本身並不提供SPA特性,需要額外安裝React-Router來達成
- 41. React-Router的頁面跳轉
• 元件會在Url跳轉時,接收到React-Router所傳遞的參數:
• children : 子元件的內容
• params : QueryString參數
• location : 當前的localtion物件
• history : 可用history物件在程式中控制頁面挑轉
• route : 渲染當前元件的Route物件
• routeParams: 與params不同在於;routeParams僅只有routing pattern字串所
定義的部份,而params會一概視為參數
例如: 定義routing pattern為users/:Id,而Url當前為/users/123/name/john,則
this.props.routeParams為{Id:’123’}
this.props.params為{Id:123, name: ‘john’}
- 44. React-Router-Redux
• 以實務來說,其實: React + Redux + React-Router就能夠製做出SPA的
網站,但是在某些特定需求下,會需要額外再加上
React-Router-Redux
• 若有下列的特殊狀況,可以考慮使用React-Router-Redux:
• 紀錄使用者所有跳轉
• 儲存跳轉紀錄
• 回放(Replay)使用者跳轉操作