我有一些数据的映射数组的状态。
我需要从中选择一个对象。
我可以使用获取整个数组

function mapStateToProps (state) {
  return {
    allDataSet: state.data
  }
}


然后选择需要在组件中放置逻辑的实体。像这样:

(id) => this.props.allDataSet.filter((entity) => entity.id === id)


但是我不知何故认为这样做是错误的,并且违反了所有最佳实践,因为所有选择器逻辑都应与组件分开。
确实这种情况很简单,但是我真正的项目是我不得不在组件内部放置复杂的选择器,以便通过ID获取数据。
是否有任何模式或最佳实践可以为此提供解决方案?

最佳答案

您应该将allDataSet标准化为一个对象,并且键应为实体的ID。

function mapStateToProps (state) {
  let allDataSet = {};
  state.data.forEach((datum) => {
    allDataSet[datum.id] = datum;
  })
  return {
    allDataSet
  }
}


然后,您可以通过this.props.allDataSet[id]访问所需的实体

看看这个
http://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html

关于javascript - 如何?使用参数创建Redux选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42556721/

10-13 06:52