看了三四天的Redux一直是蒙蒙的狀態(tài)撼港。然后就開(kāi)始看各種資料,有些資料介紹的是很詳細(xì)营曼,在關(guān)于Redux 的介紹和應(yīng)用上都很詳細(xì),但是真正想使用一個(gè)技術(shù)愚隧,你就必須了解蒂阱,技術(shù)存在的關(guān)鍵性和它的工作方式,而不僅僅只是單純的拿過(guò)來(lái)使用狂塘。
1录煤、Redux 的 API文檔。很詳細(xì)的介紹Redux荞胡。 ?------>?中文文檔
2妈踊、阮一峰對(duì)于React的理解,一共有三篇泪漂,每一篇都是精華响委。
a 、第一篇? ? ?b窖梁、第二篇赘风,中間件和異步?c、第三篇纵刘,Redux用法
3邀窃、看漫畫(huà),學(xué)Redux假哎,這是翻譯過(guò)來(lái)的一個(gè)文章瞬捕,真的很好,強(qiáng)烈推薦 ?--->看漫畫(huà)學(xué)Redux
4舵抹、項(xiàng)目我是學(xué)了react 中文文檔里關(guān)于使用ListView 和Redux完成一個(gè)任務(wù)管理肪虎。(當(dāng)然現(xiàn)在0.43版本推出了FlatList,之后我也會(huì)慢慢使用這個(gè)標(biāo)簽惧蛹。) --->項(xiàng)目
對(duì)于Redux的理解扇救,我在這里就不多說(shuō)刑枝,主要就是用于代碼結(jié)構(gòu)和組件之間的通訊,
用戶的使用方式非常簡(jiǎn)單
用戶之間沒(méi)有協(xié)作
不需要與服務(wù)器大量交互迅腔,也沒(méi)有使用 WebSocket
視圖層(View)只從單一來(lái)源獲取數(shù)據(jù)
如果滿足以上装畅,你的項(xiàng)目就根本不需要Redux來(lái)實(shí)現(xiàn)這樣的操作。
用戶的使用方式復(fù)雜
不同身份的用戶有不同的使用方式(比如普通用戶和管理員)
多個(gè)用戶之間可以協(xié)作
與服務(wù)器大量交互沧烈,或者使用了WebSocket
View要從多個(gè)來(lái)源獲取數(shù)據(jù)
某個(gè)組件的狀態(tài)掠兄,需要共享
某個(gè)狀態(tài)需要在任何地方都可以拿到
一個(gè)組件需要改變?nèi)譅顟B(tài)
一個(gè)組件需要改變另一個(gè)組件的狀態(tài)
如果滿足以上的調(diào)節(jié),那么Redux的使用锌雀,讓代碼更加方便快捷蚂夕。
在做項(xiàng)目的時(shí)候,有一個(gè)很簡(jiǎn)單的例子腋逆,就是用于在渲染的時(shí)候婿牍,點(diǎn)擊不同的按鈕,渲染不同的數(shù)據(jù)闲礼。同時(shí)要改變按鈕的顏色牍汹。如果不使用Redux铐维,則需要在渲染的時(shí)候加上判斷柬泽。并且代碼顯得臃腫,不便后期的維護(hù)嫁蛇∠遣ⅲ看以前的代碼就成了非常痛苦的事情。萬(wàn)一沒(méi)加注釋睬棚,那就是生不如死第煮。
Redux設(shè)計(jì)思想:
(1)Web 應(yīng)用是一個(gè)狀態(tài)機(jī),視圖與狀態(tài)是一一對(duì)應(yīng)的抑党。
(2)所有的狀態(tài)包警,保存在一個(gè)對(duì)象里面。
Redux有很多api底靠,具體見(jiàn)中文文檔害晦。
工作流:
很多人如果一開(kāi)始接觸Redux,一定不怎么看的懂暑中。仔細(xì)看看 《看漫畫(huà)壹瘟,學(xué)Redux》里面介紹的很詳細(xì)。
個(gè)人對(duì)于Redux的理解鳄逾,綜合一句話稻轨,就是 所有的state都是放在store里,請(qǐng)求發(fā)送的時(shí)候雕凹,會(huì)交給store殴俱。而store會(huì)決定根Reducer去處理狀態(tài)政冻。根Reducer會(huì)拆分子Reducer,子Reducer只會(huì)復(fù)制粱挡,修改赠幕,之后回傳給根Reducer。交給store樹(shù)询筏,之后榕堰。交給 視圖管理層,來(lái)實(shí)現(xiàn)狀態(tài)與視圖的一一對(duì)應(yīng)嫌套。