问题描述
我正在编写一个react组件,该组件需要在componentDidMount内部进行两次或更多 API调用。
这2个API调用将更新2个不同的状态,因此将重新呈现两个不同的子组件。
但是,我认为我写的不是最好的方法,因为一个API的潜在故障也会使另一个API失效。因为它们被一起放在componentDidMount中。
我想问一下解决这种情况的最佳方法是什么?为了避免1个API失败影响componentDidMount中的多个API调用的其他API调用?谢谢您的帮助!
import React from "react";
import * as api from "api";
import moment from "moment";
class ExchangeRate extends React.Component {
constructor(props) {
super(props);
this.state = {
dataCurrency: [],dataTrend: []
}
};
async componentDidMount() {
const date = moment().subtract(1,"month").format("YYYY-MM-DD");
const exRateTrendData = await api.exchangeRate.getTrend();
const exRateData = await api.exchangeRate.get(date);
this.setState({
dataCurrency: exRateData,dataTrend: exRateTrendData,});
};
render() {
return (
<>
<Component1 depending on dataCurrency />
<Component2 depending on dataTrend />
</>
)
};
};
解决方法
使用async/await
的最佳实践是将代码包装在try{}catch(){}
中(您可以了解更多关于here的信息),这是因为您可以在{ {1}},因此它们可能会分别失败:
componentDidMount