【发布时间】:2017-11-12 23:17:11
【问题描述】:
想象一下,你有大量的项目作为你的 redux 状态的一部分。现在每次添加/删除项目时,我都想进行一些 API 调用。目前我正在做这样的事情:
class Mixer extends React.Component{
componentWillReceiveProps(nextProps) {
// compare two massive arrays
// API call
}
render() {
//whaeva
}
}
MixerContainer = connect(
mapStateToProps,
mapDispatchToProps
)(Mixer)
比较两个大数组(nextProps 与当前 props)并在添加新项目或删除项目时进行 API 调用。这似乎非常低效,但是有没有更好的方法来处理这个问题?
【问题讨论】:
-
阵列有多大?也许您可以分离数组并在单独的 reducer 中实现逻辑?
-
嗯,目前它不是很大,但为了争论,我们假设它有数千个项目。不知道你在单独的 reducer 中实现逻辑是什么意思,你能举个例子吗?
-
因此假设有获取许多帖子的 API 调用,并且每个帖子包含许多 cmets。然后,您可以将博客和 cmets 存储在商店中的单独属性中。但我想这里真正的问题是如何比较 2 个潜在的海量数组。也许您可以使用 Map 来跟踪商店的属性(它成为 Mixer 组件中的道具)。
-
我建议您在添加或删除项目的地方进行 API 调用,以避免比较数组
标签: arrays reactjs redux state