2015-10-28 21 views
1

我是Redux的新手,但我非常喜歡。單店對SPA來說真的很棒。但我有一個真正的世界大應用程序的問題。我應該在真實世界的大型應用程序中使用多少個容器和狀態?

例如,如果有會員管理應用程序。我們有登錄頁面,會員管理頁面和會計頁面。我應該每頁有3 states嗎?如果我仍然有一個單獨的state,我擔心的是state會變得很大。

我應該每頁有3個容器嗎?如果我們需要一個新頁面,例如AddMember頁面。我應該添加一個新的容器嗎?

我應該從每個容器的unmounted方法的state樹上刪除數據嗎?

我檢查了源代碼中提供的示例。他們中的大多數只適用於小型SPA。有一個大的應用腳手架嗎?

回答

2

減速和國家

你永遠只能在終極版一個單一的國家。但是你可以很容易地將它分解成更小的子系統和減速器。假設你有一個目錄中稱爲減速器/與文件index.js,它可能是這樣的:

import { combineReducers } from 'redux'; 
import login from './login'; 
import member from './member'; 
import accounting from './accounting'; 

const rootReducer = combineReducers({ 
    login, 
    member, 
    accounting 
}); 

export default rootReducer; 

的文件login.js,member.js和accounting.js將有自己的減速功能,只需要注意他們自己的一塊狀態。

很明顯,你如何將你的狀態分解爲單獨的縮減器取決於你。這只是一個建議。如果頁面有很多重疊狀態,以這種方式進行可能不太合適。

我建議讀一下這裏的減速器。 http://rackt.org/redux/docs/basics/Reducers.html

集裝箱(或智能組件)

當你問多少容器,我假定你的意思智能組件。即,連接到Redux的React組件。作爲一個起點,我建議只連接你的根組件,並通過道具傳遞(部分)狀態。

但是,如果您使用的是React路由器,則需要連接每個路由處理程序,每個路由處理程序將分別對其狀態進行切片。

有關連接的更多信息,請參閱react-redux文檔。 https://github.com/rackt/react-redux/blob/master/docs/quick-start.md#quick-start

+0

謝謝你的回答。如果我們在整個應用程序中使用單一狀態,我仍然有一個問題。如果用戶從成員頁面導航到會計頁面,我認爲大多數成員頁面狀態數據應該被刪除,因爲我們不再需要它們。真的嗎?如果是這樣,我必須在成員減速器中手動執行它嗎? – Chris

+0

我不認爲你一定要刪除這些數據。如果您在導航回成員頁面時再次需要這些數據,那麼最好留在那裏。或者,如果某些狀態需要在從頁面轉換時重置,則可以創建重置數據的操作。 (也許你擔心內存膨脹,我不會擔心,內存很便宜,Redux的內存佔用與React相比肯定微不足道) –

+0

是的,自從我們的應用程序以來,我有點擔心內存會有很多表格。每頁有數千條記錄。在傳統的應用程序中,我們正在進行分頁。對於Redux,我認爲一旦將頁面加載到頁面中,每個頁面的數據就會存儲在狀態樹中。我不知道Redux是否適合這種應用。 – Chris

相關問題