getInitialProps, getServerSideProps, getStaticProps를 포함해 data fetching 없이 url을 변경할 수 있는 route 옵션
당연히 페이지가 변경되면 data fetching이 발생되어 이 경우는 shallow옵션이 큰 의미있지 않고, 동일한 페이지에서 url을 변경해 query로 데이터를 케이스에서 유용할 것 같다.
const RouteTest = ({title}) => {
return (
<>
<p>{title}</p>
<button onClick={()=>router.replace('/?referrer=reload')}>reload</button>
<button onClick={()=>router.replace('/?referrer=shallow', undefined, {shallow:true})}>shallow</button>
</>
)
}
export default RouteTest
export async function getServerSideProps(context) {
console.log('getServerside')
const title = context.query.referrer || 'default'
return {
props: {
title
},
}
}
첫 기본 상태
serverSideProps로부터 받은 props는 기본값 'default'를 나타낸다.
router query의 referrer는 없기 때문에 빈값.
reload가 실행되었을 때
shallow가 실행되었을 때
정리해보았을때 url변경되는 것이 공통점이었고
차이로는 공식문서 설명과 같이 dataFetching이 일어나지 않는다는 것
둘다 렌더링은 새로 일어나지만 차이가 shallow는 차이가 있는 부분만 비교하여 렌더링한다.
아예 새로고침과 같이 발생되지 않는다는 걸 알수있었다.
이 shallow routin을 사용자가 페이지를 이용하면서 화면의 깜빡임이나 스크롤 변경과 같은 불편함이 없도록하면서
url변경에 유리하게 사용하면 좋을 것 같다.