
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState("");
const [selectedCoin, setSelectedCoin] = useState(null); // 선택한 코인을 보유하고 있는 상태
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then((res) => res.json())
.then((json) => {
setCoins(json);
setLoading(false);
});
}, []);
// 드롭다운에서 새 코인을 선택할 때 처리하는 기능
const handleSelectChange = (event) => {
const coinId = event.target.value; // 선택 옵션 값에서 코인 ID를 가져오기
const coin = coins.find((coin) => coin.id === coinId); // ID를 기준으로 선택한 코인을 찾기
setSelectedCoin(coin); // 선택한 코인 상태 설정
};
return (
<div>
<h1>The number of coins is {loading ? 0 : `${coins.length}`}</h1>
{loading ? (
<h2>Coins Page is now loading...</h2>
) : (
<div>
<label>Choose Coin!</label>
<br />
<select onChange={handleSelectChange}>
{coins.map((coin) => (
<option key={coin.id} value={coin.id}>
{coin.name}
</option> // coin.id를 키와 값으로 사용
))}
</select>
{selectedCoin && ( // 선택한 코인이 있는지 확인하고 해당 코인의 세부정보를 표시
<p>
Selected Coin: {selectedCoin.name} <br />
Symbol:{selectedCoin.symbol} <br />
total_supply : {selectedCoin.total_supply} <br />
first_data_at : {selectedCoin.first_data_at} <br />
USD price : {selectedCoin.quotes.USD.price}
</p>
)}
</div>
)}
</div>
);
}
export default App;
⇒ Loading 화면
⇒ Coin API 호출 완료 ㅇ, 특정 코인 선택 X

⇒ 특정 코인 선택 ㅇ

API와 친숙하게 되는 시간이 된 것 같아서 좋았다.
이전에 CS 공부를 한참했을 때 API에 개념에 대해서만 공부해보고, 실질적으로 사용해본적은 없었다.
회사 실무에서도 다른 팀의 프로젝트에서는 시청 또는 민관기간의 API를 통해 작업하는 것을 보기만했지, 우리 팀의 프로젝트에서는 API를 사용할 이유가 없었다.
그렇기 때문에 API를 실질적으로 접해볼 기회가 지금까지 없었다.
하지만, 강의를 통해서 API를 접해볼 기화가 마련됐다.
강의에서는 위에서 기재한 것처럼 드롭박스까지만 구현됐다.
나는 특정 코인을 선택했을 때 특정 코인에 대한 정보가 드롭박스 밑의 영역에서 보이기를 원했다.
이를 위해서는 새로운 useState를 하나 더 생성해야 했고, API에서 사용하는 키 명을 파악해야 했다.
덕분에 좀 더 자세히 API 공부를 할 수 있다.
또한, API 호출을 할 때 사용하는 메서드인 fetch()에 대해서도 배워볼 수 있는 시간이 됐으며 HTML의 select 태그 등에 대해서도 알아갈 수 있는 좋았던 시간이었던 것같다.