小怪獸愛吃肉
2022-12-22 13:09:08
我有兩個問題。首先,當從 API 獲取數據時,我只在我設置的時間間隔后才獲取數據。但是,我需要立即接聽第一個電話。其次,當我將接收到的數據轉換為數字時,我丟失了部分數字,例如收到 11,518.6217 而我只得到 11。有人能幫幫我嗎? 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;
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
我正在使用 setInterval,但在第一次調用時我需要立即調用它
您應該手動調用它,以及在setInterval.
let dofetch = 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 });
}
setInterval(dofetch, 6000);
dofetch()
我丟失了部分數字,例如收到 11,518.6217 我只得到 11
您的字符串數字格式為,,您應該在將它們傳遞給parseFloat函數之前將其刪除。
parseFloat('11,518.6217') // 11
parseFloat('11,518.6217'.split(',').join('')) // 11.518.6217
所以改變:
currData.map(parseFloat);
到:
currData.map(s => parseFloat(s.split(',').join('')));
添加回答
舉報
0/150
提交
取消