两种不同的API调用 - 计算汇率
问题描述:
我向两个不同的API请求接受[比特币/美元]和[英镑/美元]。我正在使用axios
来设置promise
,并且在两个调用都成功解析时,我将这两个值都设置为set.State{}
。两种不同的API调用 - 计算汇率
我试图计算英镑/比特币之间的汇率,但对于我的生活无法包裹我的头如何最好地做到这一点。自从我使用React
以来,也有一段时间了,所以任何关于改进我所得到的建议都会很棒。
app.js
import React, { Component } from 'react';
import './App.css';
import axios from 'axios';
class App extends Component {
constructor(props) {
super(props);
this.state = {
conv: [],
GBP: [],
XBT: [],
};
}
componentDidMount() {
axios.all([this.getXbt(), this.getGbp()])
.then(axios.spread((xbtValue, gbpValue) => {
const XBT = xbtValue.data.bpi.USD.rate_float;
const GBP = gbpValue.data.rates.GBP;
const conv = this.calcConversion(GBP, XBT);
this.setState({conv, GBP, XBT});
}));
}
calcConversion(x, y) {
// Calculate conversion value here
return x/y;
}
getXbt() {
return axios.get('https://api.coindesk.com/v1/bpi/currentprice/XBT.json');
}
getGbp() {
return axios.get('https://openexchangerates.org/api/latest.json?app_id=#API_KEY#');
}
render() {
return (
<div className="App">
<div id="crypto-conversion">
<span className="left">{this.state.conv}</span>
</div>
<div id="crypto-container">
<span className="left">{this.state.GBP}</span>
<span className="right">{this.state.XBT}</span>
</div>
</div>
);
}
}
export default App;
答
假设的API作为GBP/1USD
和USD/1XBT
返回数据,则转换率是简单地在两个值的乘积,并且将导致GBP/1XBT
。
它也一直是同时一点点,因为我用反应,所以对提高我有什么任何意见将是巨大的。
您的代码目前看起来很好。我喜欢你处理API调用的方式,并且只要调用一次就遵循约定。
编辑:
而且,我只是,如果你愿意掏出$ 95 /月实现的,开放汇率API提供了一个/convert端点支持BTC
。