Skip to content

How to use the Next.js Router

New Course Coming Soon:

Get Really Good at Git

Learn how to use the `next/router` package to control routes in Next.js

In linking two pages in Next.js using Link we saw how to use the Link component to declaratively handle routing in Next.js apps.

It’s really handy to manage routing in JSX, but sometimes you need to trigger a routing change programatically.

In this case, you can access the Next.js Router directly, provided in the next/router package, and call its push() method.

Here’s an example of accessing the router:

import { useRouter } from 'next/router'

export default () => {
  const router = useRouter()
  //...
}

Once we get the router object by invoking useRouter(), we can use its methods.

This is the client side router, so methods should only be used in frontend facing code. The easiest way to ensure this is to wrap calls in the useEffect() React hook, or inside componendDidMount() in React stateful components.

The ones you’ll likely use the most are push() and prefetch().

push() allows us to programmatically trigger a URL change, in the frontend:

router.push('/login')

prefetch() allows us to programmatically prefetch a URL, useful when we don’t have a Link tag which automatically handles prefetching for us:

router.prefetch('/login')

Full example:

import { useRouter } from 'next/router'

export default () => {
  const router = useRouter()

  useEffect(() => {
    router.prefetch('/login')
  })
}

You can also use the router to listen for route change events.

Are you intimidated by Git? Can’t figure out merge vs rebase? Are you afraid of screwing up something any time you have to do something in Git? Do you rely on ChatGPT or random people’s answer on StackOverflow to fix your problems? Your coworkers are tired of explaining Git to you all the time? Git is something we all need to use, but few of us really master it. I created this course to improve your Git (and GitHub) knowledge at a radical level. A course that helps you feel less frustrated with Git. Launching May 21, 2024. Join the waiting list!

Here is how can I help you: