我有一些数据的映射数组的状态。
我需要从中选择一个对象。
我可以使用获取整个数组
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/