0.1.3 • Published 3 years ago

next-router-query v0.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

next-router-query

Drop-in alternative of useRouter().query that tries it's best to get the query params on the first mount.

Have you ever gotten annoyed by the fact that useRouter().query is an empty object on the first mount? Great, then this is a library for you.

Illustrating the difference

Given a page called post/[id].jsx that is called with /post/myId?key=value:

You will see something like this when first mounting the page:

useRouter().query // result: {} // 😢 

With next-router-query you'll see the difference

--------- Render #1  --------
useRouter().query result: {} // 😢 
useRouterQuery() result: {id: 'myId', key: 'value'} // 😻

Once the first render is done and useRouter().query returns data, we'll simply return that instead.

Caveats

  • Relies on URLSearchParams - you might need some polyfill
  • Only works in the browser - server will not show the right result

Install

yarn add next-router-query
# or 
npm i next-router-query

Usage

import { useRouterQuery } from 'next-router-query';

export function MyPage() {
  const routerQuery = useRouterQuery()

  // ...
}