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