Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- sub태그
- go live
- Live Server
- padding 속성
- tag html
- br 태그
- 인접 형제 결합자
- iframe 태그
- css
- id 선택자
- html 태그
- height속성
- 아두이노
- focus 의사클래스
- Checked 의사 클래스
- iframe
- 일반 형제 결합자
- background-color 속성
- 임베디드
- 전체 선택자
- RGB
- sup태그
- i 태그
- width속성
- not 의사클래스
- html tag i
- 자식결합자
- html
- reveal in file explorer
- RGBA
Archives
- Today
- Total
so woon!
[React] URL fetch하기 | 코인 정보 불러오기 본문
학습일 : 2023. 03. 18
오늘 해볼 것
1. URL fetch 해보기
2. 코인 정보 (코인이름, 가격, 순위 등) 불러오기
시작
<App.js>
URL fetch를 위해서
"https://api.coinpaprika.com/v1/tickers" 를 적어줄 건데,
useEffect를 통해 사이트가 로딩 되자마자 딱 한번만 로딩해줄 것이기 때문에
빈배열을 적어준다.
fetch를 하고
fetch 한 것이 응답으로 오면 그 응답을 json으로 리턴해주고
리턴 된 json 값을 setCoins 를 통해 coins가 되도록 해주고
모든 값이 다 로딩되었다면 setLoading(false); 하여 true=> false로 만들어서 로딩중일때만 나오는
"Loading..." 문구를 나오지 않게 만들어준다.
"https://api.coinpaprika.com/v1/tickers" 에 들어가면
우리가 불러올 값들을 볼 수 있는데
예를들자면 .name .symbol .rank 등이 있다.
잘 살펴보고 불러올 값을 적용해보면 되겠다.
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState([]); // default는 빈배열, data를 coins로 둠
useEffect(() => {
// fetch를 한다. then을 써서 응답을 받아서 response.json을 리턴해준다.
fetch("https://api.coinpaprika.com/v1/tickers") // URL fetch
.then((response) => response.json()) //URL fetch 한걸 응답을 받아 json으로 리턴
.then((json) => {
setCoins(json); // 리턴한 json값을 setCoins 해줌
setLoading(false); // setCoins 해주었기 때문에 (다 불러왔기 때문에) 로딩을 false로 바꾸어주기
});
}, []); // [] 적어주어 한번만 로딩되고 끝
return (
<div style={{fontFamily: "'Gowun Dodum', sans-serif",
color:"rgb(255,255,255)", backgroundColor:"rgb(0,0,0)" }}>
<h1 style={{margin:"0"}}>The Coins! (총 {coins.length}개)</h1>
{loading ? <strong>loading...</strong> : null}{" "}
{/*로딩 중일때 loading...가 표시됨 아닐때는 문구가 사라짐*/}
<ul>
{/* index가 필요없는 이유 : ID를 갖고 있기 때문에 key를 ID로 써도 되기 때문
첫번째 리스트로 name을 보여주고 싶기 때문에 coins.name을 작성해준다.
coin은 coins array안에 있는 각각의 coin을 의미한다. */}
{coins.map((coin) => (
<li>
{coin.rank} {/*코인 랭킹*/}
{"위 : "}
{coin.name} ({coin.symbol}) : ${coin.quotes.USD.price} USD {/*이름 (심볼) : 가격 USD*/}
</li>
))}
</ul>
</div>
);
}
export default App;
실행결과
아주 잠깐이지만
새로고침 했을 때
Loading... 문구가 출력됨을 알 수 있다.
'ReactJS > 개념정리' 카테고리의 다른 글
[React] 영화정보 api fetch 하기 (0) | 2023.03.19 |
---|---|
[React] 코인변환기 만들기 (0) | 2023.03.19 |
[React] array의 직접적 수정 없이 element를 추가하는 방법 + 간단히 to do list 만들기 (2) | 2023.03.17 |
[React] Cleanup function (1) | 2023.03.17 |
[React] 클릭시 요소 표시/숨기기 (0) | 2023.03.17 |
Comments