본문 바로가기

JS 공부/NextJS

221208

1. route 

npm i react-router-dom@5.3.0

으로 다운로드한다.

 

router을 사용하면 주소에 따라 보여지는 component를 다르게 해줄 수 있다.

 

import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Detail from "./routes/Detail";
import Home from "./routes/Home";

 

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/detail">
          <Detail />
        </Route>
        <Route path="/">
          <Home />
        </Route>
      </Switch>
    </Router>
  );
}

Router와 Switch로 감싸 준 후 경로와 그에 해당하는 컴포넌트를 지정해주면 된다.

<Route path="/">
          <Home />
        </Route>

 

그리고 주소로 이동하게 해주는 버튼을 만들어주어야 하는데 

HTML의 a=herf 를 사용해도 되기는 하지만 이렇게 하면 주소 이동시에 페이지 전체가 새로고침 되기 때문에 별로다.

이럴 때에는 Link라는 component를 사용하면 된다.  

 

import { Link } from "react-router-dom"; 불러온 후

<h2>
        <Link to="/movie">{title}</Link>

</h2>  해주면 된다.

새로고침 하지 않고 /movie 페이지를 열어주기 때문에 속도가 빠르다.

 

이제 각 영화 title이 /movie/:id로 이동하게 하고 그 id에 맞는 영화 정보를 주게 하고 싶다.

 :id는 1,2,3,4 이런식으로 알아들을 수 있지만 id는 문자 그대로 id라고 인식하기 때문에 :id라고 해야한다.

 

그리고 id를 받아오기 위해 Movie 데이터를 넘겨주는 Home.js에서  id={movie.id}로 id props를 추가해준다.

그리고 Link에 id를 추가해준다. <Link to={`/movie/${id}`}>{title}</Link>

 

useParams라는 함수를 쓰면 url의 변수값을 가져올 수 있다. 이 함수로 선택한 영화의 id를 알아낼 수 있다.

 

알아낸 id로 해당 /movie/:id에 맞는 영화의 정보를 나타내주면 된다.

 

'JS 공부 > NextJS' 카테고리의 다른 글

230224  (0) 2023.02.24
230222  (0) 2023.02.24
230221  (0) 2023.02.22
230216  (0) 2023.02.17
221214  (0) 2022.12.15