gpt4 book ai didi

javascript - promise.all() 中的 setState react

转载 作者:行者123 更新时间:2023-12-03 16:47:23 25 4
gpt4 key购买 nike

我有一个小的 crud 应用程序,我正在尝试构建和输出一些数据。我必须进行 3 个不同的 api 调用,每个调用都返回一个 promise ,并且通过它我试图将每个返回 promise 分配给它自己的状态。

export default class TableExampleControlled extends Component {

state = {
rentalsData: [],
driversData: [],
vehiclesData: [],
};

componentDidMount() {
Promise.all([rentals(), drivers(), vehicles()])
.then((rentalsData,driversData, vehiclesData) => {
this.setState({ rentalsData,driversData, vehiclesData });
console.log(this.state)
});
};
render() {
const rentalEntries = this.state.rentalsData
const tableRow = rentalEntries.map((data) =>
<TableRow selected={this.isSelected(0)}>
<TableRowColumn key={data.status}>{data.status}</TableRowColumn>
<TableRowColumn key={data.vehicle}>{data.vehicle}</TableRowColumn>
<TableRowColumn key={data.driver}>{data.driver}</TableRowColumn>
<TableRowColumn key={data.email}>{data.email}</TableRowColumn>
<TableRowColumn key={data.start_date}>{data.start_date}</TableRowColumn>
<TableRowColumn key={data.end_date}>{data.end_date}</TableRowColumn>
<TableRowColumn key={data.rate}>{data.rate}</TableRowColumn>
</TableRow >
);

最佳答案

我在您的示例中看到了两个问题。 Promise.all解析为单个变量,该变量是一个数组。该数组的元素是您调用的结果。所以:

.then(result => {
const [ rentalsData, driversData, vehiclesData ] = result;

this.setState({ rentalsData,driversData, vehiclesData });
});

当您调用 setState 时,您也无法立即看到状态。因为该方法是异步的。如果你想做,试试:
this.setState({ rentalsData,driversData, vehiclesData }, () => {
console.log(this.state);
});

关于javascript - promise.all() 中的 setState react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com