osgsm.io
HomeNotesNext.js ルーティング関連の Pages Router と App Router の主な違い

Next.js ルーティング関連の Pages Router と App Router の主な違い

Published Jan 31, 2025
Updated Feb 16, 2025

App Router では、useRouterusePathname などのルーティング関連の hooks は、next/navigation からインポートする必要がある。

useRouter hook の挙動は、 Pages Router でnext/router からインポートできるものと異なる。next/router の方は App Router では使用できない。

新しい useRouter は、 pathname string を返さないが、その代わりに usePathname を使う。 加えて、 query object も返さないようになったが、その代わりに useSearchParamsuseParams を使う。

App Router の新しい hooks は、 Client Component でしか使用できないので要注意。

'use client'
 
import { useRouter, usePathname, useSearchParams } from 'next/navigation'
 
export default function ExampleClientComponent() {
  const router = useRouter()
  const pathname = usePathname()
  const searchParams = useSearchParams()
 
  // ...
}

他にも isFallbackbasePath, asPath, isReady, route などが削除されている。

詳しくは Upgrading: From Pages to App | Next.js を参照。


参考