본문 바로가기
FE/React

Shallow Routing

by ideal_string 2022. 10. 25.

리액트와 같은 싱글 페이지 어플리케이션은 전체 페이지를 업로드 후 특정 부분을 돌아다니며 보여주는 개념이다. 이때 새로고침 화면도 바뀌지만, 주소도 바뀌어야 사용자가 덜 헷갈릴 수 있다. 이를 돕는 게 shallow routing이다. 리액트의 프레임워크격인 Next.js에서 useRouter로 해당 기능을 지원한다. 

 

 

import { useRouter } from "next/router";

export default function RouterPage(){
const onClickToPage = () => {
	router.push(url, as, option)
}

return(
	<button onClick={onClickToPage}>안녕하세요</button>
)}

안녕하세요 버튼을 누르면 특정 페이지로 이동하게 한 코드다. 여기서 onClickToPage를 router.push로 페이지를 이동시키게 되는데, shallow Routing을 할 수 있는 기능이다. push 파라미터로는 이동할 url, 브라우저 주소에 표시할 이름인 as, shallow 속성을 갖는 option이 있다. as는 옵션 사항으로 입력하지 않으면 앞서 기입한 url을 기준삼는다. option 값으로 shallow를 줄 경우 shallow routing 기능이 활성화된다. 

const onClickToPage = () => {
	router.push("/board", undefined, {shallow : true})
}

shallow routing은 위와 같이 쓴다. 이렇게 쓸 경우 fetch 메서드인 getStaticProps, getSeverSideProps, getInitialProps 등을 쓰지 않고도 현재 주소를 유지할 수 있다. 즉, 특정페이지로 이동 후 state가 업데이트 되어 리렌더링이 되더라도, 현재 이동된 페이지 url을 계속 유지할 수 있다는 말이다.

 

마무리

싱글페이지애플리케이션은 참 신기한 점이 많다. 화면을 깜빡이게 하는 새로고침이 싫어 나왔다는 점, 이를 위해 모든 파일을 한 번에 다 불러왔다는 점, 그로인해 발생한 여러가지 부작용을 잡아둔 여러 기능이 포함되었다는 점 모두. jsx에서도 a태그를 쓸 수 있지만 새로고침이 없는 싱글페이지애플리케이션 특성상 사용하지 않는다. 사용하더라도 새로고침을 막는 함수를 쓰거나, next에서는 Link 기능 안에 한정적으로 사용한다. 새로고침 시킬 바엔 조금 더 귀찮더라도 좋게 보이는 게 좋다는 모두의 선택이라는 소리니까 신기할 따름이다. 약간 완벽을 추구하기에 과정은 어떠하든 중요치 않다는 것을 알려주는 기능 같다.

 

※ 잘못된 내용이 있을 경우 댓글로 알려주세요. 배우고 익히고 수정하겠습니다:)

'FE > React' 카테고리의 다른 글

Curring  (0) 2022.10.26
Optimistic-UI  (0) 2022.10.25
LazyLoad & PreLoad  (0) 2022.10.24
HOC & HOF  (0) 2022.10.19
전역 상태 관리  (0) 2022.10.09