Redux是一個(gè)狀態(tài)管理的庫(kù),它提供可預(yù)測(cè)的狀態(tài)管理褥芒。原來(lái)我們一個(gè)js文件只需要維護(hù)一個(gè)視圖的情況下嫡良,我們使用原生的js就能搞定了。如果我們想提高一點(diǎn)效率少辣,我們可以再加上一個(gè)jQuery羡蛾,這個(gè)時(shí)候我們只要處理好邏輯,基本就可以了。但是當(dāng)一個(gè)web應(yīng)用更加復(fù)雜的時(shí)候器予,特別是當(dāng)我們?cè)陂_發(fā)一個(gè)復(fù)雜的單頁(yè)應(yīng)用的時(shí)候捐迫,我們需要管理各種復(fù)雜的狀態(tài),這些狀態(tài)可能是數(shù)據(jù)的狀態(tài)施戴,比如說(shuō)服務(wù)器返回的數(shù)據(jù),或者是本地的數(shù)據(jù)雷则,它也可能是UI的狀態(tài)肪笋,比如說(shuō)一個(gè)單選框是不是被勾選上了,或者是沒(méi)被勾選藤乙,等等。在這個(gè)時(shí)候我們要管理這些不斷變化的狀態(tài)而姐,就會(huì)變得非常的困難罚勾。Redux只著眼于狀態(tài)的維護(hù),它只管理數(shù)據(jù)尖殃,視圖的變化等動(dòng)作它不管,它只管數(shù)據(jù)缔俄。
??redux是維護(hù)狀態(tài)的器躏,其實(shí)也就是維護(hù)數(shù)據(jù)的,它做的也就是給應(yīng)用去提供數(shù)據(jù)遏佣,然后去更改數(shù)據(jù)揽浙,包括以什么樣的方式去更改這些數(shù)據(jù)的問(wèn)題意敛。
redux工作流程
??Redux有一個(gè)非常核心的東西叫做store膛虫,不管一個(gè)應(yīng)用復(fù)雜的什么樣的程度,這個(gè)應(yīng)用只有唯一的一個(gè)store稍刀。這個(gè)應(yīng)用任何一個(gè)地方需要數(shù)據(jù)都從store里面去拿到。只要調(diào)用store.getState()就可以拿到整個(gè)應(yīng)用的數(shù)據(jù)综膀。而當(dāng)你要去更新數(shù)據(jù)的時(shí)候局齿,也就是更新這個(gè)應(yīng)用的state的時(shí)候,你不能直接去修改這個(gè)state,而應(yīng)該發(fā)起一個(gè)action示绊,當(dāng)你發(fā)起一個(gè)action的時(shí)候,reducer就會(huì)去更改這個(gè)數(shù)據(jù)拌禾。怎么樣去更改數(shù)據(jù)不是你要去關(guān)心的問(wèn)題展哭,而是reducer要去關(guān)心的問(wèn)題,你只要發(fā)起action就好了匪傍,reducer會(huì)知道什么樣的action,然后去更改什么樣的數(shù)據(jù)茵休。