ReactJS/개념정리

[REACT] crypto-tracker project

xowoony 2023. 4. 3. 17:15

학습일 : 2023. 04. 03


타입스크립트 + 리액트 + react-router-dom + styled-component + react-query 를 사용하기 위해

아래의 명령어로 설치해주고 새로운 프로젝트를 연다

뭔가 중복된 것도 있을텐데 일단 올려놓음

npx create-react-app --template typescript .
npm i --save-dev @types/styled-components
npm i styled-components
npm install react-router-dom
npm i react-router-dom react-query
npm i --save-dev @types/react-router-dom

 

 

새로운 프로젝트에선

coinpaprika 라는 API를 이용하여
코인 트래킹 어플리케이션을 만들어볼 것이다.

우선 기존 방식으로 데이터를 fetch 해볼텐데,
그 이후 리액트쿼리를 이용해 fetch 해볼 것이다.


리액트 쿼리 패키지는 기존보다 훨씬 편리한 방식으로
데이터를 fetch 시킬 수 있다고 한다. 너무 궁금하다.

API는 아래 경로를 참고하면 되겠다.
https://api.coinpaprika.com/docs#tag/Tickers/operation/getTickers

 

Coinpaprika

 

api.coinpaprika.com

 


src 폴더 안에

routes 폴더를 만들어주고

그 안에 Coins.tsx, Coin.tsx 파일을 생성한다.

 

다음, src 폴더 안

Router.tsx 파일 생성

 

 

<Router.tsx>

Switch 대신 Routes를 써주도록 한다. (react-router-dom v6 이상 버전관련 이슈) 
Routes 자식으로는 Route 밖에 올 수 없다.
Route 자식으로 뭔가 올 수 없기 때문에 element로 추가해주도록 한다.

import { BrowserRouter, Routes, Route } from "react-router-dom";
import Coins from "./routes/Coins";
import Coin from "./routes/Coin";

function Router() {
  return (
    <BrowserRouter>
      <Routes>
        {/* home - 코인들 */}
        <Route path="/" element={<Coins />} />
        {/* Coin ID - 해당 코인정보 */}
        <Route path="/:coinId" element={<Coin />} />
      </Routes>
    </BrowserRouter>
  );
}
export default Router;
// 작성해주고 App.tsx로 가서 Router를 렌더링해준다.

 

<App.tsx>

import Router from "./Router";

function App() {
  return <Router />;
}

export default App;

 

 

실행결과

localhost:3000 

home

 

<Coin.tsx>

useParams를 이용해보자

import { useParams } from "react-router";

function Coin(){
    const params = useParams();
    console.log(params);
    return <h1>Coin</h1>;
}

export default Coin;

 

 

 

localhost:3000/btc 경로로 이동하면

coinId가 btc로 잘 찍혀나오는 걸 볼 수 있다.

 

 

 

 

 

이젠 useParams를 이용하여  coinId가 화면에 찍혀나오도록 해보자

useParams의 자세한 사용법은

이전에 발행했던 글을 참고해보자

2023.03.21 - [REACT/개념정리] - [React] useParams() 사용하기

 

[React] useParams() 사용하기

학습일 : 2023. 03. 21 useParams() 사용하기에 앞서 먼저, Movie.js에서 id 를 사용할 수 있게 하기 위해 Home.js에서 안에 id={movie.id} 를 줘야한다 이렇게 하면 이제 Movie가 prop으로 id를 받게된다. Movie.js에서

xowoony.tistory.com

 

 

<Coin.tsx>

import { useParams } from "react-router-dom";

function Coin() {
  // react-router-dom v6 이상의 경우
  // useParams쓰는 순간 타입이 string or undefined로 설정됨.
  // 따라서 const {coinId} = useParams(); 로만 적어줘도됨
  const { coinId } = useParams();

  return <h1>Coin: {coinId}</h1>;
}

export default Coin;

 

실행결과

home경로일 땐 coins가 출력

/어쩌고 경로일땐 coin:어쩌고가 출력된다.