useHistory (react-router-dom@5)

2023. 4. 24. 09:01React

useHistory

useHistory는 react-router-dom 안에 있는 객체이다. react-router-dom@5 버전까지 가능하며 react-router-dom@6 버전부터는 useNavigate 객체로 변경되었다.

사용법

const history = useHistory();

변수에 useHistory를 추가해서 사용할 수 있다.

1. push

<button onClick={()=> history.push('/about')}>어바웃으로</button>

push는 페이지를 이동 할 수 있다.
go 라는 것도 똑같이 페이지를 이동하지만 두개의 차이점은 push는 prop을 전달 할 수 있다.
또한 히스토리 스택에 새 항목을 푸시한다.

2. go

<button onClick={()=> history.go('/about')}>어바웃으로</button>

go 는 push와 비슷하게 사용된다.
히스토리 스택의 포인터를 n 항목 별로 이동한다.
페이지를 이동할 때 굉장히 많이 사용된다.

3. goBack

<button onClick={()=> history.goBack(-1)}>뒤로가기</button>

뒤로가기 기능이라고 생각하면 될거 같다.
웹 브라우저 마다 뒤로가기 기능은 항상 존재하지만 대 부분 왼쪽 위편에 존재한다.
사용자가 예를 들어 웹 쇼핑을 하고 디테일 페이지에 들어왔을 때 눈에 잘 보이고 마우스 이동이 적은 위치에 이 버튼을 배치하면 ux 부분에서도 큰 도움이 될거 같다.

4. replace

<button onClick={()=> history.replace('/payment')}>결제하기</button>

replace 함수는 히스토리 스택에 현재 항목을 추가하는게 아닌 대체를 한다.
프로젝트를 할 때 한번 사용해 봤는데 굉장히 유용하게 사용할 때가 많았다.
스택을 대체해야 하는 순간은 프로젝트를 하다보면 한번씩은 생긴다.
예를 들어 한번만 신청할 수 있는 이벤트 페이지에서 사용자가 양식을 입력하고 제출 버튼을 눌렀을 때 뒤로가기를 눌렀을 때 다시는 그 페이지에 들어올 수 없어야 한다.
현재는 react-router-dom@6 버전을 많이 사용함으로 요즘은 useNavigate를 주로 사용한다.
5버전과 6버전의 차이점은 나중에 정리해보겠다.

'React' 카테고리의 다른 글

[React] 새로운 훅을 미리 학습하기 "use"  (16) 2023.10.26
Virtual DOM  (0) 2022.06.26
useMemo (컴포넌트 최적화)  (0) 2022.06.01
useState (상태)  (0) 2022.05.22