【发布时间】:2019-01-04 18:36:22
【问题描述】:
在 React 中处理一个小项目,我正在使用 Axios 从经过测试的 API 中获取信息。问题是当我拉入数据并尝试更新组件状态时,来自 API 的值没有填充到要在组件中呈现的状态。
我一直在尝试获取如下状态的数据:
componentDidMount() {
this.state.databases.forEach(d => {
axios.get(`http://localhost:3204/customer/${d}/count`).then(value => {
this.setState({ counts: this.state.counts.push(value.data) });
});
});
console.log(this.state);
}
以前的版本是这样写的:
componentDidMount() {
let internalCounts = [];
this.state.databases.forEach(d => {
axios.get(`http://localhost:3204/customer/${d}/count`).then(value => {
internalCounts.push(value.data);
});
});
this.setState({count: internalCounts});
}
这两种情况最终都会得到相同的结果。状态永远不会用新的计数数组真正更新。我怀疑这是由于Axios 和 setState 的异步性质造成的。
什么是让这两者停止相互竞争的简单有效的方法?
【问题讨论】:
标签: javascript arrays reactjs setstate