redux store action reducer

創(chuàng)建 store?

定義 action?

出發(fā)reducer

compose(...functions)

從右到左來(lái)組合多個(gè)函數(shù)。

compose(...functions)

從右到左來(lái)組合多個(gè)函數(shù)。

這是函數(shù)式編程中的方法,為了方便,被放到了 Redux 里。

當(dāng)需要把多個(gè)store 增強(qiáng)器依次執(zhí)行的時(shí)候,需要用到它。

參數(shù)

(arguments): 需要合成的多個(gè)函數(shù)。預(yù)計(jì)每個(gè)函數(shù)都接收一個(gè)參數(shù)。它的返回值將作為一個(gè)參數(shù)提供給它左邊的函數(shù),以此類推。例外是最右邊的參數(shù)可以接受多個(gè)參數(shù),因?yàn)樗鼘橛纱水a(chǎn)生的函數(shù)提供簽名。(譯者注:compose(funcA,funcB,funcC)形象為compose(funcA(funcB(funcC()))))

返回值

(Function): 從右到左把接收到的函數(shù)合成后的最終函數(shù)。

createStore(reducer,[preloadedState],enhancer)

創(chuàng)建一個(gè) Reduxstore來(lái)以存放應(yīng)用中所有的 state。

應(yīng)用中應(yīng)有且僅有一個(gè) store。

參數(shù)

reducer(Function): 接收兩個(gè)參數(shù),分別是當(dāng)前的 state 樹(shù)和要處理的action,返回新的state 樹(shù)

[preloadedState](any): 初始時(shí)的 state。 在同構(gòu)應(yīng)用中,你可以決定是否把服務(wù)端傳來(lái)的 state 水合(hydrate)后傳給它,或者從之前保存的用戶會(huì)話中恢復(fù)一個(gè)傳給它。如果你使用combineReducers創(chuàng)建reducer,它必須是一個(gè)普通對(duì)象,與傳入的 keys 保持同樣的結(jié)構(gòu)。否則,你可以自由傳入任何reducer可理解的內(nèi)容。

enhancer(Function): Store enhancer 是一個(gè)組合 store creator 的高階函數(shù),返回一個(gè)新的強(qiáng)化過(guò)的 store creator。這與 middleware 相似,它也允許你通過(guò)復(fù)合函數(shù)改變 store 接口。

返回值

(Store): 保存了應(yīng)用所有 state 的對(duì)象。改變 state 的惟一方法是dispatchaction。你也可以subscribe 監(jiān)聽(tīng)state 的變化,然后更新 UI。


從react-redux導(dǎo)入Prodiver組件將store賦予Provider的store屬性,

=================================================

redux中有三個(gè)基本概念,Action,Reducer,Store。

回到頂部

Action 作用。

1、用Action來(lái)分辨具體的執(zhí)行動(dòng)作。比如我是要添加一個(gè)項(xiàng)目還是刪除一個(gè)項(xiàng)目。

2、操作數(shù)據(jù)首先得有數(shù)據(jù)。比如添加數(shù)據(jù)得有數(shù)據(jù),刪除數(shù)據(jù)得有ID。action就是存這些數(shù)據(jù)的地方。

3、不帶其他數(shù)據(jù),僅僅啟示已有數(shù)據(jù)需要如何調(diào)整,或者需要主動(dòng)獲取哪些數(shù)據(jù)。如果我要?jiǎng)h除掉全部數(shù)據(jù),只要告知這件事即可

回到頂部

Reducer的作用:

官方描述:Action 只是描述了有事情發(fā)生了這一事實(shí),并沒(méi)有指明應(yīng)用如何更新 state。這是 reducer 要做的事情。

這么說(shuō)吧,Action就像一個(gè)指揮者,告訴我們應(yīng)該做哪些事,比如我要?jiǎng)h除,reducer就會(huì)給我們提供‘資源(就是上面說(shuō)的數(shù)據(jù))’,真正的體力勞動(dòng)者是reducer。

也就是說(shuō),action里面的每一種描述,比如新增啦,刪除一個(gè),刪除全部啦,reducer都有一個(gè)對(duì)應(yīng)的函數(shù)來(lái)處理數(shù)據(jù)。之后返回給你一個(gè)新的state

reducer 只是一個(gè)模式匹配的東西,真正處理數(shù)據(jù)的函數(shù),是額外在別的地方寫(xiě)的,在 reducer 中調(diào)用罷了。

回到頂部

Store:

前面兩個(gè),我們知道使用 action 來(lái)描述“發(fā)生了什么”,和使用 reducers 來(lái)根據(jù) action 更新 state 的用法。

Store 就是把它們聯(lián)系到一起的對(duì)象。Store 有以下職責(zé):

維持應(yīng)用的 state;

提供 getState() 方法獲取 state;

提供 dispatch(action) 方法更新 state;

通過(guò) subscribe(listener) 注冊(cè)監(jiān)聽(tīng)器

就是說(shuō),將action和reducer聯(lián)系在一起的是store。

這一點(diǎn)要和flux的store是有區(qū)別的,flux的store是數(shù)據(jù)工廠,所有的數(shù)據(jù)操作都在store那里執(zhí)行,而且flux的store可以有多個(gè)。

redux中,數(shù)據(jù)工廠在reducer這里,而不是在store這里。store有且只有一個(gè),切記?。。。?/b>

如果你前面學(xué)習(xí)了flux,再學(xué)習(xí)redux其實(shí)是有一點(diǎn)小困惑的。通過(guò)Reducer修改數(shù)據(jù)給我們帶來(lái)了哪些好處?

主要有兩點(diǎn):

1、數(shù)據(jù)拆解

2、數(shù)據(jù)不可變(immutabilit



一個(gè)reducer對(duì)應(yīng)一個(gè)state;然后通過(guò)combineReducers將多個(gè)state合并成了一個(gè)大的state對(duì)象; React-Redux 提供Provider組件;并設(shè)置參數(shù)store,可以讓容器組件的connect方法拿到store。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 看到這篇文章build an image gallery using redux saga,覺(jué)得寫(xiě)的不錯(cuò),長(zhǎng)短也適...
    smartphp閱讀 6,334評(píng)論 1 29
  • 前言 本文 有配套視頻,可以酌情觀看。 文中內(nèi)容因各人理解不同,可能會(huì)有所偏差,歡迎朋友們聯(lián)系我討論。 文中所有內(nèi)...
    珍此良辰閱讀 12,176評(píng)論 23 111
  • Redux對(duì)于React程序是可有可無(wú)的嗎?當(dāng)你認(rèn)識(shí)到Redux在編程時(shí)給你那種可以掌控一切狀態(tài)能力的時(shí)候,你會(huì)覺(jué)...
    smartphp閱讀 1,211評(píng)論 0 5
  • 學(xué)習(xí)必備要點(diǎn): 首先弄明白,Redux在使用React開(kāi)發(fā)應(yīng)用時(shí),起到什么作用——狀態(tài)集中管理 弄清楚Redux是...
    賀賀v5閱讀 9,066評(píng)論 10 58
  • http://gaearon.github.io/redux/index.html ,文檔在 http://rac...
    jacobbubu閱讀 80,411評(píng)論 35 198

友情鏈接更多精彩內(nèi)容