在现实世界的大型应用程序中,我应该拥有多少个容器和状态?

时间:2015-10-28 02:00:44

标签: reactjs redux

我是Redux的新手,但我非常喜欢。这家单店非常适合SPA。但我对现实世界的大应用提出了一个问题。

例如,如果有会员管理应用程序。我们有登录页面,会员管理页面和会计页面。我应该每页有3 states吗?如果我还有一个state,我担心的是state将是巨大的。

每页应该有3个容器吗?如果我们需要一个新页面,例如AddMember页面。我应该添加一个新容器吗?

我应该从每个容器state方法的unmounted树中删除数据吗?

我查看了源代码中提供的示例。其中大部分仅适用于小型SPA。是否有一个很大的应用程序支架?

1 个答案:

答案 0 :(得分:2)

减少者和州

Redux中只有一个状态。但是您可以轻松地将其分解为具有减速器的较小子状态。假设您有一个名为reducers /的文件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将拥有自己的reducer函数,只需知道自己的状态。

你如何将你的状态分解为单独的减速器取决于你。这只是一个建议。如果页面具有大量重叠状态,则以这种方式执行此操作可能不合适。

我建议在这里阅读减压器。 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