国产自91精品自在拍精选久久_久久一级精品毛片_亚洲一区二区福利在线观看_一级片免费在线观看视频_三级黄色网的直播内容_国产av日韩一区二区三区_影音先锋av在线资源网_日韩特级免费毛片_亚洲无码午夜视频_欧美日韩中文在线观看的

React,關(guān)于redux的一點(diǎn)小見(jiàn)解

2017-05-28

最近做多頁(yè)面應(yīng)用使用到了,react + webpack + redux + antd去構(gòu)建多頁(yè)面的應(yīng)用,本地開(kāi)發(fā)用express去模擬服務(wù)端程序(個(gè)人覺(jué)得可以換成dva).所以在這里吐槽一下我自己對(duì)于redux的一些見(jiàn)解。   Redux是狀態(tài)管理的服務(wù),可以當(dāng)作是mvc中的controller層,你也可以把它認(rèn)為是mvvm中vm層。雖然它本身受到Flux的影響很大,但是它的核心概念缺很簡(jiǎn)單,就是Redue也就是ES5中Array.prototype.reduce,這個(gè)reduce用于合并數(shù)組的元素,例:      Redux認(rèn)為,一個(gè)應(yīng)用程序中,所有的應(yīng)用模塊之間需要共享訪問(wèn)的數(shù)據(jù),都應(yīng)該在Store的State里面。這點(diǎn)和React的state和props的概念是一致的。外面的props盡量不去改變,而改變的只是內(nèi)部的狀態(tài)state,而有shouldComponentUpdate這個(gè)生命周期函數(shù),我們可以?xún)?yōu)化react.   但是有一個(gè)原則是沒(méi)有改變的,就是在你不知道你是否需要redux的時(shí)候,你肯定是不需要它。就像Flux的作者說(shuō)的那樣,F(xiàn)lux就像眼鏡,你會(huì)知道你在什么時(shí)候需要它。   下面介紹一些本人對(duì)于redux的一些使用經(jīng)驗(yàn):  ?。?)你最好保證State的沒(méi)個(gè)節(jié)點(diǎn)都是immutable的,這樣確保在消費(fèi)State的時(shí)候只需要進(jìn)行簡(jiǎn)單的引用就可以了。從而避免Deep Equal 的遍歷過(guò)程。也就是說(shuō)你的state最好是鍵值的對(duì)象形式,避免數(shù)組形式的非state最底層值的形式。  ?。?)reducer為純函數(shù),如果判斷太多,可以使用combineReducers(),去組合reducer,分離reducer  ?。?)合理管理你的state.并不需要所有的數(shù)據(jù)都在State里面,雖然這也是可以,總之一句話(huà),合適你的才是最好的,適用需要的代碼才是最好的。   (4)建議所以的asyncAction都應(yīng)該被管理。這很大程度上,可以提高用戶(hù)體驗(yàn)。建議適用Promise async/await 去實(shí)現(xiàn)異步的管理。