2015-10-28 18 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

相关问题