【发布时间】:2017-02-14 18:26:36
【问题描述】:
所以我们在一个项目上大约有两个月的时间。这是我第一次管理代码编写者而不是自己编写代码。上周我一直在阅读他们的代码。原本应该是一个简单的 React 应用程序现在变成了意大利面条式的混乱。
我了解:redux 有助于管理全局状态。但这是否意味着所有按钮都应映射到全局“动作”?这似乎造成了散布在整个应用程序中的整个混乱的对象。我一直在问自己,当本地状态可以用于 90% 的应用程序时,为什么我们要为所有事情使用全局状态。这是让我心痛的代码:
let subitems = SidebarItems[state.type].sub_items;
Store.dispatch(SidebarSubItemHandler(item.action, subitems[0], null));
if(item.sub_items[subitems[0]].param) {
browserHistory.push(`${item.sub_items[subitems[0]].path}/${item.sub_items[subitems[0]].param}`);
} else {
browserHistory.push(item.sub_items[subitems[0]].path);
}
subItembuttons = Object.keys(this.props.subitems.sub_items).map(subitem => {
let subItem = this.props.subitems.sub_items[subitem];
return <li className={this.props.activeSubItem.action == subItem.action ? "bottom-bar-item active" : "bottom-bar-item"}
onClick={e => this.props.onClickSubItem(e, subItem)}
key={subItem.action} style={this.props.subitems.inlineStyles.mobileSubItemLI}>
<a href="">{subItem.item}</a>
</li>;
});
应用程序中充斥着各种各样的对象,例如映射到“动作”对象的对象。所以在这一点上,我们决定废弃整个项目并从头开始,但没有 redux。让我们尽量只使用本地状态。到时候,我们需要全局状态,只为那个东西实现它,而不是应用程序中的每一个动作。这有意义吗?
所以我想我的问题是:如果我们使用本地状态和基本 React 开发应用程序,我们是否会产生不可逆转的问题,从而阻止我们基于每个项目实施 redux?
【问题讨论】:
-
我认为在示例代码 sn-p 中提供更多文件将有助于人们查看代码库中意大利面条代码的上下文。同时使用本地状态和全局状态并没有什么明显的错误。我认为展示更多代码将有助于了解编写该代码的开发人员没有遵循 React/Redux 架构的哪些概念或原则。
-
github.com/reactjs/redux/issues/1287 瞧,制造商本人的回答。 Redux 的一个很好的用例是当你想从你的 UI 组件中分离状态。混合状态和组件有时是不可避免的,但将它们混合起来会很快变得很脏
标签: javascript reactjs redux single-page-application react-redux