React-Redux是Redux的官方React綁定庫,它能夠使你的React組件從Redux store中讀取數(shù)據(jù),并且向store分發(fā)actions以更新數(shù)據(jù)
1.React-Redux將所有組件分成兩大類:UI組件和容器組件。UI組件負(fù)責(zé)UI的呈現(xiàn),容器組件負(fù)責(zé)管理數(shù)據(jù)和邏輯。
UI組件:只負(fù)責(zé) UI 的呈現(xiàn),不帶有任何業(yè)務(wù)邏輯;沒有狀態(tài)(即不使用this.state這個(gè)變量);所有數(shù)據(jù)都由參數(shù)this.props提供;不使用任何Redux的API
容器組件:負(fù)責(zé)管理數(shù)據(jù)和業(yè)務(wù)邏輯,不負(fù)責(zé)UI的呈現(xiàn);帶有內(nèi)部狀態(tài);使用Redux的API。
2.React-Redux?規(guī)定,所有的?UI?組件都由用戶提供,容器組件則是由?React-Redux?自動(dòng)生成。也就是說,用戶負(fù)責(zé)視覺層,狀態(tài)管理則是全部交給它。
3.<Provider>組件
connect方法生成容器組件以后,需要讓容器組件拿到state對(duì)象,才能生成UI組件的參數(shù)。
React-Redux提供Provider組件,使整個(gè)app訪問到Redux store中的數(shù)據(jù) 即state。

4.connect()

connect方法接受兩個(gè)參數(shù):mapStateToProps和mapDispatchToProps。它們定義了UI組件的業(yè)務(wù)邏輯。前者負(fù)責(zé)輸入邏輯,即將state映射到UI組件的參數(shù)props,后者負(fù)責(zé)輸出邏輯,即將用戶對(duì)UI組件的操作映射成Action。
5.mapStateToProps
mapStateToProps是一個(gè)函數(shù),它接受state作為參數(shù),返回一個(gè)對(duì)象。這個(gè)對(duì)象有一個(gè)todos屬性,代表UI組件的同名參數(shù),后面的getVisibleTodos也是一個(gè)函數(shù),可以從state算出todos的值。
mapStateToProps建立一個(gè)從(外部的)state對(duì)象到(UI組件的)props對(duì)象的映射關(guān)系。執(zhí)行后應(yīng)該返回一個(gè)對(duì)象,里面的每一個(gè)鍵值對(duì)就是一個(gè)映射。
6.mapDispatchToProps
mapDispatchToProps用來建立UI組件的參數(shù)到store.dispatch方法的映射。它定義了哪些用戶的操作應(yīng)該當(dāng)作Action,傳給Store。它可以是一個(gè)函數(shù),也可以是一個(gè)對(duì)象。
是函數(shù)則會(huì)得到dispatch和ownProps(容器組件的props對(duì)象)兩個(gè)參數(shù)。

是一個(gè)對(duì)象,它的每個(gè)鍵名也是對(duì)應(yīng)?UI?組件的同名參數(shù),鍵值應(yīng)該是一個(gè)函數(shù),會(huì)被當(dāng)作?Action creator?,返回的?Action?會(huì)由?Redux?自動(dòng)發(fā)出。
