redux store

时间:2015-12-13 19:08:18

标签: model reactjs redux

我刚刚完成了一个redux应用程序的连接,到目前为止它很棒。但是,由于州存储在巨型商店中,因此您没有任何模型可以访问您的数据。

假设我有一个模型类,它存储有关用户的一些信息。我通常会在名为display_name的类中添加一个函数,该函数可以智能地组合其名称的不同部分。有了这个,我的不同观点可以简单地调用display_name,而不是他们需要知道如何自己计算。

Redux明确表示不要在状态中存储计算值,这样就可以在组件中定义它。但这可能是正确的,因为这样您最终会在需要它的每个组件中复制此代码。

存储此逻辑的适当位置在哪里?

2 个答案:

答案 0 :(得分:7)

最简单的方法是创建实用程序函数来计算这些数据,并将它们放在一个可供许多组件使用的单独模块中。 mapStateToProps功能。一个非常简单的例子:

import { displayName } from "./utils";

function mapStateToProps(state) {
  return {
    displayName: displayName(state.user)
  };
}

function MyComponent(props) {
  return <div>Name: {props.displayName}</div>;
}

export default connect(mapStateToProps)(MyComponent);

答案 1 :(得分:1)

根据Redux文档中的Computing Derived Data页面,建议的方法是使用Reselect库来处理选择和记忆。

如果您在Github中搜索包含术语“createSelector”的Javascript项目,您应该找到许多以各种方式使用Reselect的实际应用程序。我出现了三个:jfurrow/floodFH-Potsdam/shifted mapsmadou/GW2 Armory