React Router는 다이나믹 URL을 지원한다.
(다이나믹 URL : url에 변수를 넣을 수 있다는 뜻. )
다이나믹url을 만들기 위해서는 몇가지 절차를 따라야한다.
예시로 보는 Route 사용법)
(react-route-dom @5버전이며, 6버전은 사용법이 다르다.)
//
App.js에서 사용하진 않지만 Home컴포넌트의 자식 컴포넌트로서 Movie 컴포넌트도 있다.
<Route path="/movie/:변수>
변수는 자신이 사용할 변수 명으로,콜론은 필수로 기입하여 변수명을 작성한다.
위와 같이 작성하면, /movie를 기본으로 하고
(/:변수)를 통해 보여줄 각기 다른 페이지를 만들 수 있다. ex) /movie/:변수
2.실제 영화 정보를 가공하여 화면에 뿌려주는 Movie 컴포넌트 내에서
Link 태그를 만들어 유저를 "/movie/변수"의 경로로 Detail 페이지로 보낼 수 있게 만든다.
(를 통해 Detail로 넘어가게 할 수 있다는 뜻.)
( /:변수 설정을 하지 않으면 Detail 컴포넌트를 재사용하지 못하고 Text만 담겨 있는 하나의 Detail 컴포넌트만 보인다.)
Home.js
<Movie id={movie.id} ... />
Movie컴포넌트가 변수를 직접 받을 수 없는 이유 ?
Home컴포넌트에서 API를 통해 받아온 데이터 중 id라는 데이터 묶음을 변수로 사용할 것이기에,
그 데이터 묶음 id를 프롭스로 넘겨주어야 하기 때문이다.
id라는 데이터를 변수로 사용하려는 이유?
사용자가 디테일 페이지로 넘어가는 경로를 설정하려면,
각각의 영화마다 다른 디테일페이지로 넘어가는 경로를 수작업해야 하는데,
수정,변경사항이 있을때마다 일일히 바꿔줄 수는 없기 때문이다.)
useParams활용법
App.js에서 찍힌 해당 컴포넌트에 포함된 Route path에 변수를 적는다.
Route가 설정된 컴포넌트.js로 들어가 변수 이름에 맞게 useParam를 설정한다
ex) Details라는 컴포넌트의 Route path의 변수가 :tomato라면
1. import { useParams } from 'react-router-dom'으로 useParams를 import하고
const { tomato } = useParams() 로 사용한다.
useParams를 사용함으로서 :id의 변수 값을 넘겨준다.
이렇게 변수 값을 받을 수 있다면 API에 요청을 보내는 것만 남는다.
id(변수)에 들어오는 값을 정확히 알아야 하는 이유 ?
지금 Detail 컴포넌트는 각 숫자마다 다른 url로 접속되지만 하드코딩된 Text만 보여주고 있다.
클릭된 영화에 맞는 상세페이지를 보여주려면 , 각 영화에 맞는 상세페이지로 이동할 수 있는 id값을 알아야한다.
npm i gh-pages
finish product
html css js
뒤로가기 버튼 만들기 ( O )
프라이스 탭 데이터 만들기
차트를 candle chart로 바꾸기
https://quotation-api-cdn.dunamu.com/v1/forex/recent?codes=FRX.KRWUSD%20
환율
천단위점찍기(toLocalString 안될때 사용)
.replace(/\B(?<!.\d*)(?=(\d{3})+(?!\d))/g, ',')