在真实世界的大型应用程序中我应该有多少个容器和状态?
How many containers and state should I have in a real world big application?
我是Redux
的新手,但我非常喜欢它。单店做SPA真的很棒。但我对真实世界的大型应用程序有疑问。
比如,如果有一个会员管理应用。我们有登录页面、会员管理页面和记账页面。每页应该有 3 states
吗?如果我还有一个 state
,我担心 state
会变得很大。
每个页面应该有 3 个容器吗?如果我们需要一个新的页面,比如AddMember 页面。我应该添加一个新容器吗?
我应该从每个容器的 unmounted
方法的 state
树中删除数据吗?
我查看了源代码中提供的示例。他们中的大多数只适用于小型SPA。有大应用脚手架吗?
减速器和状态
在 Redux 中你只有一个状态。但是您可以使用 reducer 轻松地将其分解为更小的子状态。假设您有一个名为 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 函数,只需要知道它们自己的状态。
如何将状态分解为单独的 reducer 完全取决于您。这只是一个建议。如果页面有很多重叠状态,以这种方式执行可能不合适。
我建议在这里阅读减速器。
http://rackt.org/redux/docs/basics/Reducers.html
容器(或智能组件)
当你问有多少容器时,我假设你指的是智能组件。也就是说,连接到 Redux 的 React 组件。作为起点,我建议只连接你的根组件,并通过 props 向下传递(部分)状态。
但是,如果您使用的是 React Router,则需要连接每个路由处理程序,每个路由处理程序都将占用自己的状态片段。
有关连接的更多信息,请参阅 react-redux 文档。 https://github.com/rackt/react-redux/blob/master/docs/quick-start.md#quick-start
我是Redux
的新手,但我非常喜欢它。单店做SPA真的很棒。但我对真实世界的大型应用程序有疑问。
比如,如果有一个会员管理应用。我们有登录页面、会员管理页面和记账页面。每页应该有 3 states
吗?如果我还有一个 state
,我担心 state
会变得很大。
每个页面应该有 3 个容器吗?如果我们需要一个新的页面,比如AddMember 页面。我应该添加一个新容器吗?
我应该从每个容器的 unmounted
方法的 state
树中删除数据吗?
我查看了源代码中提供的示例。他们中的大多数只适用于小型SPA。有大应用脚手架吗?
减速器和状态
在 Redux 中你只有一个状态。但是您可以使用 reducer 轻松地将其分解为更小的子状态。假设您有一个名为 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 函数,只需要知道它们自己的状态。
如何将状态分解为单独的 reducer 完全取决于您。这只是一个建议。如果页面有很多重叠状态,以这种方式执行可能不合适。
我建议在这里阅读减速器。 http://rackt.org/redux/docs/basics/Reducers.html
容器(或智能组件)
当你问有多少容器时,我假设你指的是智能组件。也就是说,连接到 Redux 的 React 组件。作为起点,我建议只连接你的根组件,并通过 props 向下传递(部分)状态。
但是,如果您使用的是 React Router,则需要连接每个路由处理程序,每个路由处理程序都将占用自己的状态片段。
有关连接的更多信息,请参阅 react-redux 文档。 https://github.com/rackt/react-redux/blob/master/docs/quick-start.md#quick-start