
1. Coin Tracker
- 암호화폐 가격을 추적하고 관리하는 애플리케이션이나 웹사이트
- 자신의 포트폴리오를 관리하고, 가격 변동을 확인하고, 트렌드를 분석할 수 있음
2. 간단한 Coin Tracker 만들기
- 단순히 암호화폐들과 가격을 나열
- useEffect를 이용ㅠ ㅜㅜ
- 페이지나 앱에 들어왔을 때 로딩 메세지가 표시
- 코인들이 나열되면 로딩 메세지를 숨기고 리스트로 표시
3. 초기 상태
import { useState } from "react";
function App() {
return (
<div>
</div>
);
}
export default App;
3. Coin 데이터 가져오기
- 로딩 화면 만들기
import { useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
return (
<div>
<h1>The Coins</h1>
{loading ? <strong>Loading ...</strong> : null}
</div>
);
}
export default App;

- api 요청해서 데이터 받아오기
https://api.coinpaprika.com/v1/tickers

import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers");
}, [])
return (
<div>
<h1>The Coins</h1>
{loading ? <strong>Loading ...</strong> : null}
</div>
);
}
export default App;


- 가져온 데이터를 json으로 만들어서 콘솔에 표시하기
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then(response => response.json())
.then((json) => console.log(json));
}, []);
return (
<div>
<h1>The Coins</h1>
{loading ? <strong>Loading ...</strong> : null}
</div>
);
}
export default App;

5. 데이터를 화면에 표시하기
- 가져온 데이터를 state에 넣기
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState([]);
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then(response => response.json())
.then((json) =>
setCoins(json));
setLoading(false);
}, []);
return (
<div>
<h1>The Coins</h1>
{loading ? <strong>Loading ...</strong> : null}
</div>
);
}
export default App;

- map을 이용하여 coins 배열 안에 있는 coin들 표시하기

import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState([]);
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then((response) => response.json())
.then((json) => {
setCoins(json);
setLoading(false);
});
}, []);
return (
<div>
<h1>The Coins</h1>
{loading ? <strong>Loading ...</strong> : null}
<ul>
{coins.map((coin) => (
<li key={coin.id}>{coin.name} ({coin.symbol}): {coin.quotes.USD.price} USD</li>
))}
</ul>
</div>
);
}
export default App;

6. 마무리하기
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState([]);
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then((response) => response.json())
.then((json) => {
setCoins(json);
setLoading(false);
});
}, []);
return (
<div>
<h1>The Coins({coins.length})</h1>
{loading ? <strong>Loading ...</strong> : null}
<ul>
{coins.map((coin) => (
<li key={coin.id}>{coin.name} ({coin.symbol}): {coin.quotes.USD.price} USD</li>
))}
</ul>
</div>
);
}
export default App;


Share article