當(dāng)年看完react-native中文文檔,并費(fèi)勁心思創(chuàng)建成功第一個(gè)項(xiàng)目后,你也許會(huì)覺得react-native應(yīng)該沒啥難的,網(wǎng)上有那么多輪子,拿來用就好了。但是越用越覺得別人的輪子弊端太多,局限性太強(qiáng),所以好多東西還得自己寫,我也就是在這個(gè)時(shí)候強(qiáng)烈的感覺到redux對項(xiàng)目的關(guān)鍵性。
相對原生開發(fā)而言,react-native開發(fā)中并沒有 $emit? $broadcast 機(jī)制,那么問題來了,我想在一個(gè)頁面給另一個(gè)頁面發(fā)消息怎么辦?其實(shí)react-native早就為我們想到了這些,那就是它自帶的flux,但是網(wǎng)上說flux有局限性,redux更牛逼。于是看了下redux中文文檔,它是 ES2015 語法,寫的很詳細(xì)。
redux是應(yīng)用狀態(tài)管理服務(wù),根據(jù)js而來的經(jīng)驗(yàn),我們知道array.reduce(callback[, initialValue])同時(shí)應(yīng)用一個(gè)函數(shù)針對數(shù)組的兩個(gè)值(從左到右),以減至一個(gè)值。
constinitState ='0';
constactions = ['1','2','3'];
constnewState = actions.reduce(? ?
? ? ? ( (prevState, action) => prevState + action ),? ?
? ? ? initState
);
給定initState之后,隨著action的值不斷傳入給計(jì)算函數(shù),得到新的newState,最終結(jié)果為0+1+2+3=6,如果理解這個(gè)那么對redux原理你已經(jīng)了解了,接下來就是使用了。
下面介紹在react-native項(xiàng)目中使用redux
action、reducer、store是你不可或缺的三部分,核心就是store根據(jù)action對應(yīng)reduce數(shù)據(jù)。