- useParams와 useLocation을 이용한 페이지 이동 (2)2022년 06월 05일
- 슬용이
- 작성자
- 2022.06.05.오후09:56
page를 이동할 때 쓰는 next 혹은 previous 버튼 또한 리액트 훅을 사용하여 구현할 수 있다.
url의 id 값이 nex를 누를 때는 +1이, previous를 누르면 -1이 되면 된다.
<button onClick={goToPrevious}>Previous</button> <button onClick={goToNext}>Next</button>
const goToPrevious = () => { navigate(`/monsters/detail/${params.id - 1}`); }; const goToNext = () => { navigate(`/monsters/detail/${params.id + 1}`); };
하지만 단순히 이런 함수를 만들어도 제대로 동작하지 않는다.
이유는 params.id 에 저장되는 값이 string 이기 때문이다.
문자열 - 1은 연산이 되지만 + 1은 되지 않는 것 !
const goToPrevious = () => { navigate(`/monsters/detail/${Number(params.id) - 1}`); }; const goToNext = () => { navigate(`/monsters/detail/${Number(params.id) + 1}`); };
url이 변화한 것은 볼 수 있지만 아직 화면은 변하지 않는다.
이는 useEffect의 의존성 배열을 쓰면 화면 변화를 능동적으로 다룰 수 있다!
useEffect의 의존성 배열 안에 있는 값은 해당 값이 변하면 sideEffect를 실행시켜 준다.
path parameter 값을 의존성 배열에 넣어주면 값이 변할때마다 새로 렌더가 가능한 것이다.
useEffect(() => { fetch(`https://jsonplaceholder.typicode.com/users/${params.id}`) .then((res) => res.json()) .then((data) => setMonster(data)); }, [params.id]);
짜란 그럼 url이 변경될 때 정상적으로 화면이 새로 렌더되는 것을 볼 수 있다!
'React' 카테고리의 다른 글
query parameter를 사용하여 pagination 구현하기 (0) 2022.06.05 useParams와 useLocation을 이용한 페이지 이동 (1) (0) 2022.06.05 Comment component (0) 2022.05.30 import order convention (0) 2022.05.29 input과 type으로 알아보는 useState ⚛️ (0) 2022.05.21 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)