천천히 배움,/Front-End

[React] react-router-dom의 유용한 Hooks!

margu 2021. 9. 23. 08:07

알아두면 유용하게 사용할 수 있는 세가지 hook을 알아보자!

 

useHistory

- history 객체는 페이지 전체를 리로드하지 않고 주소를 임의로 변경하거나 되돌릴 때 사용한다.

- 또한, 화면 전환과 함께 데이터를 전달할 수도 있다. 

아래 코드에서 history.push("other", {movie})를 보면 path 주소를 other로 바꿔줌과 동시에 해당 컴포넌트에 movie 데이터를 전달하게 된다. 그렇게 되면 하위 컴포넌트에서 다시 movie에 대한 정보를 비동기적으로 요청하여 가져오지 않아도 된다.  

보통, 구글링에 찾아보면 history.push({ pathname: "/other", state: { movie }}) 이런식으로 많이 사용하던데, 아래 그림과 같은 방법이 더 간단하다!

- history 객체에서 자주 사용하는 메서드는 다음과 같다. (공식 문서 참조: https://reactrouter.com/web/api/history)

push(path, [state]) : 새로운 경로를 히스토리 스택에 푸쉬
goBack() : 이전 페이지로 이동
goForward() : 다음 페이지로 이동

 

useParams

- useParams를 이용하여 url parameter를 손쉽게 받아와 사용할 수 있다.

먼저, url parameter란 path값에 들어있는 변수를 말한다! 아래 코드에서는 id이다.

이를 받아서 사용할 컴포넌트에서는 다음과 같이 사용하면 된다.

- useParams를 사용하지 않는 경우에는 props.match.params로 받을 수 있다.

 

useLocation

- 현재 URL을 가져올 수 있다.

- state로 데이터를 받는 경우, location.state.movie와 같이 접근할 수 있다.