1. 目的:如題旋炒。
2. 準(zhǔn)備材料:redux全家桶尤泽。
3. 原因:為了方便管理程序中網(wǎng)絡(luò)請(qǐng)求到的數(shù)據(jù)的流動(dòng)。
4. 參考鏈接:redux官方文檔巾钉,redux入門教程翘狱。
5. 文檔中有用的內(nèi)容總結(jié)如下:
6. redux的三大原則:?jiǎn)我粩?shù)據(jù)源(有且只有一個(gè)store),state是只讀的(只能用action來(lái)改變store里的內(nèi)容)砰苍,用純函數(shù)來(lái)處理store的變化(就是reducer)潦匈。
7. 純函數(shù):純函數(shù)就是只用函數(shù)的參數(shù)來(lái)做計(jì)算后返回結(jié)果的函數(shù),并且不會(huì)改變參數(shù)本身赚导,所以也不會(huì)導(dǎo)致任何的副作用茬缩。
8. store的幾個(gè)方法:createStore(參數(shù)1:reducer,返回store吼旧。參數(shù)2:程序的起始state凰锡,可選,建議不要用這個(gè)參數(shù)圈暗,每個(gè)reducer默認(rèn)的參數(shù)最好寫(xiě)在他們自己里面掂为,這樣可讀性更強(qiáng)),getState(獲取當(dāng)前state)员串,subscribe(參數(shù)回調(diào)函數(shù)毡惜, 每次store更新時(shí)都會(huì)調(diào)用)伤柄。
9. 合并reducer:既然每個(gè)reducer負(fù)責(zé)處理程序的一個(gè)小的部分,最后就要合并到一個(gè)大的reducer,來(lái)處理整個(gè)程序的action达吞。這時(shí)就要用到combineReducers(參數(shù)object游昼,里面每個(gè)鍵值對(duì)是一個(gè)reducer)撵幽。
10. Provider:當(dāng)向下傳遞store給子控件調(diào)用(獲取state值或者發(fā)action)的時(shí)候伴榔,很難避免寫(xiě)好多的props傳來(lái)傳去,難看又麻煩海铆。react-redux的Provider可以很好的解決隱性傳值的問(wèn)題迹恐,不用寫(xiě)store={this.props.store}也可以把store傳遞下去,其中用到的就是react的上下文環(huán)境功能(context)來(lái)實(shí)現(xiàn)父子甚至爺孫之間的props傳遞卧斟。Provider的實(shí)現(xiàn)可以參考這次提交殴边。