I have two problems. First, when fetching data from API I get it only after the interval, which I set. However, first call I need to get immediately. Second, when I converting received data into numbers, I lose part of numbers, as example instead receiving 11,518.6217 I get only 11. Can anybody help me, please.
class Currencies extends Component {
state = {
inputField: 0,
exRates: 0,
};
componentDidMount() {
try {
setInterval(async () => {
const res = await fetch(
"https://api.coindesk.com/v1/bpi/currentprice.json"
);
const exRates = await res.json();
console.log(exRates.bpi);
this.setState({ exRates: exRates.bpi });
}, 6000);
} catch (err) {
console.log(err);
}
}
BTCChangeHandler = (event) => {
this.setState({ inputField: event.target.value });
};
render() {
const exRates = this.state.exRates;
const currData = Object.values(exRates).map((value) => value.rate);
const rates = currData.map(parseFloat);
console.log(rates);
return (
<div>
<input
type="number"
placeholder="Enter BTC value"
onChange={this.BTCChangeHandler}
/>
<Currency name="USD" value={this.state.inputField * rates[0]} />
<Currency name="GPB" value={this.state.inputField * rates[1]} />
<Currency name="EUR" value={this.state.inputField * rates[2]} />
</div>
);
}
}
export default Currencies;