- useNavigate() : 브라우저에 직접 path를 입력하지 않고 페이지 이동할 수 있는 Hook
- useLocation() : 현재 위치하는 페이지에서 여러 정보를 추가적으로 얻을 수 있는 Hook
- Link : html 태그 중
a태그기능을 대체하는 API (Hook은 아님)- useParams : path에 있는 각각의 고유한 id값을 조회할 수 있는 Hook
**사용법**
// src/pages/home.js
import { useNavigate } from "react-router-dom";
const Home = () => {
const navigate = useNavigate();
return (
<button
onClick={() => {
navigate("/works");
}}
>
works로 이동
</button>
);
};
export default Home;
**사용법**
// src/pages/works.js
import { useLocation } from "react-router-dom";
const Works = () => {
const location = useLocation();
console.log("location :>> ", location);
return (
<div>
<div>{`현재 페이지 : ${location.pathname.slice(1)}`}</div>
</div>
);
};
export default Works;
=> 콘솔 로그로 'location'을 찍어보면 key가 pathname, search, state, key인 한 객체가 찍힌다.
Link를 사용해서 구현해야 함.<Link to="/contact">contact 페이지로 이동하기</Link> <Route path="works" element={<Works />} />
<Route path="works/:id" element={<Works />} />
:id는 동적인 값을 받겠다는 의미이면서, useParams 훅(Hook)에서 조회할 수 있는 값works/1로 이동해도, works/2, works/3 ... works/100으로 이동해도 모두 로 이동하게 됨.{id: '1'} 이런 식으로 id값이 문자열이 나오므로 find, filter 등 id값을 비교할 때 해당 값을 숫자로 변환해주는 parseInt() 함수를 사용해 줄 필요가 있다. **예시**
// src/pages/Work.js
import React from 'react';
import { useParams } from 'react-router-dom';
const data = [
{ id: 1, todo: '리액트 배우기' },
{ id: 2, todo: '노드 배우기' },
{ id: 3, todo: '자바스크립트 배우기' },
{ id: 4, todo: '파이어 베이스 배우기' },
{ id: 5, todo: '넥스트 배우기' },
{ id: 6, todo: 'HTTP 프로토콜 배우기' },
];
function Work() {
const param = useParams();
const work = data.find((work) => work.id === parseInt(param.id));
return <div>{work.todo}</div>;
}
export default Work;
잘 보고 갑니다
눈이 침침 한테 폰트가 커서 좋읍니다