Redux: Redux:受Flux啟發的一種架構風格
Redux 使用了類似于 Flux 的單向數據流,但是它只有一個單一的store對象,這個store對象通過克隆原始的store來改變,它使用了一些函數,并不產生副作用。Redux中沒有Dispatcher。
Redux 是受到了非死book Flux和 Elm 啟發的應用構架。像在Flux中一樣,Redux中的數據流是單向的,這是為了簡化應用構架并使得推論變得簡單。不像Flux,在Redux中有一個單一的store對象,包含整個應用程序的state。這個store是由對象樹結構組成的,它是不變的。每次state需要改變的時候,一個新的對象樹就創造了出來,合并了先前state中的數據和改變的數據。當一個action對象被分派到store中的時候,改變就被觸發。action是一個簡單的對象,其中包含了需要執行的操作的類型以及一些負載。改變由reducers 來執行,reducers 是沒有副作用的純函數,將先前的state和一個action作為參數。它們會返回由應用action產生的新的state。
Store不是一個類,而是一個伴隨著一些方法的對象。通過在應用程序的最初的state執行root reducer可以創造出store。為了擴展應用程序,我們需要添加附加的reducers。每個reducer都維護一個state樹的一支。 Redux提供了一個方法,可以將reducers合并成一個,當store被創造出來的時候,它可以做一個簡單的調用。
不像Flux一樣,在Redux中沒有主要的Dispatcher。當一個action需要被執行時,store的dispatch()方法被調用,將action當作參數。然后所有的監聽器被通知state已經改變了,它們可以選擇去獲取新的state,然后相應地呈現相關組成部分。
雖然Redux可以與任意的JavaScript框架一起使用來構建應用程序,它也是React的一個標準搭配,因為這個框架可以讓開發者“把UI描述為state的函數”,Redux的關注點是基于不同的actions,安全地對state執行更新操作。
直到八月達到了2.1.0版本,Flux源源不斷地在提交更新,但是近三個月內的改善非常少。 GitHub repository 指出到目前為止,125個問題已經解決,還有15個問題仍然懸而未決。它們是一些次要的增強請求,有些問題和文檔有關,有些是詢問,其中一個是錯誤報告。除非非死book正在開發未開拓的市場,Flux現在看上去非常穩定,只有一小部分新的東西在我們眼前。
查看英文原文: Redux: An Architectural Style Inspired by Flux