2017-08-03 37 views
0

我觀看了一些關於減速器的視頻,他們都聲稱我應該只使用一個減速器併爲我的整個項目申明,我應該將每個減速器組合成一個大減速器。何時以及爲什麼我應該將Reduux in Redux結合起來?

現在我的問題是,爲什麼要這樣做?想象一下,我有一個很大的應用程序,我把所有的減速器結合起來。由於我們需要檢查每個減速器切片,因此我的組合減速器將非常龐大,單個狀態更改需要很長時間。

我真的應該只用一個減速機來做更大的項目嗎?我們爲什麼要將它們結合起來,而不是創建多個商店,以及性能如何?

隨着你的應用程序變得更復雜,你要分割你減少 功能分爲不同的功能,的 狀態管理的每個獨立部分。

.combineReducers(...) 

非常感謝。

+1

多個商店? Redux的整個目標是擁有一個單一的全球狀態,一個真實的單一起源。 Reduux的組合允許Redux構造狀態。 – Li357

+0

噢,好的,非常感謝,安德魯! - 我們是不是會遇到性能問題如果我們將許多reducer合併到一個root Reducer中?假設我有一個動作需要由一個特定的reducer進行處理,那麼我們需要遍歷整個bundle,僅用於目標reducer ... – JohannaNoobie

+1

嗯,沒有。當你將所有的縮減器組合在一起時,它們全部組合成一個單一的函數來檢查所有類型的動作。最糟糕的是,在找到合適的產品之前,必須檢查每一個動作。從實際的角度來看,這並不是性能問題,你也不應該擔心性能。 – Li357

回答

2

Redux FAQ entry on the performance of "calling all reducers"

需要注意的是一個終極版店裏真的只有一個減速功能是非常重要的。商店將當前狀態和已分派的操作傳遞給該減速器功能,並讓減速器適當地處理事情。

嘗試處理單個函數中的每個可能的操作並不能很好地擴展,僅僅是在函數大小和可讀性方面,所以將實際工作分割成可由頂級簡化器調用的單獨函數是有意義的。但是,即使您碰巧有許多不同的減速機功能組合在一起,甚至在深度嵌套的狀態下,減速機速度也不會成爲問題。 JavaScript引擎每秒能夠運行大量的函數調用,並且大多數reducers可能只是使用switch語句並默認返回現有狀態以響應大多數操作。

此外,從the FAQ entry on whether you should create multiple stores

這是可能在一個頁面中創建多個不同的Redux的商店,但預期的模式是隻有一個單店。擁有一個商店可以使用Redux DevTools,使數據持久化和再水化更簡單,並簡化訂購邏輯。

但是,創建新商店不應該是您的第一本能,特別是如果您來自Flux背景。如果不能解決您的問題,請先嚐試減速器組合物,並僅使用多個商店。

+0

愛你馬克! – JohannaNoobie

相關問題