์๊ตฌ์ฌํญ ์ ์
useEffect๋ฅผ ์ฌ์ฉํ์ฌ api๋ 1ํ๋ง ๋ถ๋ฌ์ค๊ธฐ- api ๋ถ๋ฌ์ค๋ ๋์์
๋ก๋ฉํ๋ฉด๋ ธ์ถํ๊ธฐ- ๋ด ์์ฐ๊ณผ ์ฝ์ธ์ ์ ํํ๋ฉด ๊ตฌ๋งค ๊ฐ๋ฅํ ์ฝ์ธ ๊ฐ์ ์๋ ค์ฃผ๊ธฐ
์๊ฒ๋ ์
import { useEffect, useState } from 'react';
function Coin() {
const [isLoading, setIsLoading] = useState(false);
const [coins, setCoins] = useState([]);
const [asset, setAsset] = useState();
const [getCoin, setGetCoin] = useState(0);
const onChangeAsset = (event) => setAsset(event.target.value);
const onChangeGetCoin = (event) => setGetCoin(event.target.value);
useEffect(() => {
setIsLoading(true);
fetch('https://api.coinpaprika.com/v1/tickers')
.then((res) => res.json())
.then((res) => {
setCoins(res);
setIsLoading(false);
});
}, [])
return (
<div>
<h1>The Coins ({coins.length})</h1>
<div>
<input
type="text"
placeholder='Enter your asset here'
value={asset}
onChange={onChangeAsset} />
</div>
{isLoading ? <h3>Loading...</h3> : <select onChange={onChangeGetCoin}>
{coins.map((el) => <option
key={el.id}
value={el.quotes.USD.price}>
{el.name}({el.symbol}): ${el.quotes.USD.price}
</option>)}
</select>}
<div>
YOU CAN BUY: {(asset !== undefined && getCoin > 0) ? (Number(asset) / getCoin).toFixed(3) : null}
</div>
</div>
)
}
export default Coin