🌟

next jsでページをロードせずにurlを更新したい場合

2020/10/26に公開

shallow routing使えば実現できる

const handleChangeIndex = (index: number) => {
  const routes = {
    1: 11,
    2: 22
  }
  const targetId = routes[index]
  if (!targetId) return

  router.push(`/index?target_id=${targetId}`, undefined, { shallow: true })
}

getServerSidePropsやgetStaticPropsは実行されずurlだけ切り替わったような挙動になる

※別urlへの遷移はshallowに設定していてもページ遷移の動作になるので注意
/hoge?aaa=1 => /hoge?bbb=2はOK
/hoge => /fugaはNG

Discussion