6c7e76b551
This adapts the new client hooks of `usePathname`, `useSearchParams`, and `useRouter` to work within the `pages/` directory to aid users attempting to migrate shared components over to the `app/` directory. > **Exception:** > When the pages router is not ready, `useSearchParams` will return an empty `URLSearchParams`. This mirrors the behavior seen in the `pages/` directory today in that `router.query` is not available until the client hydrates. This also adds a new option for `useRouter` to bring it line with the correct typings with the app directory. By default, calling `useRouter()` will return the type `NextRouter | null` to represent what you get when you call it from a component originating from the app directory. If you want to instead force it to return `NextRouter` as it does today, you can pass a boolean into the `useRouter` call as such: ```ts const router = useRouter() // typeof router === NextRouter | null const router = useRouter(true) // typeof router === NextRouter ``` This change is designed to ease the incremental adoption of app.
8 lines
245 B
TypeScript
8 lines
245 B
TypeScript
import React from 'react'
|
|
import type { NextRouter } from './router/router'
|
|
|
|
export const RouterContext = React.createContext<NextRouter | null>(null)
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
RouterContext.displayName = 'RouterContext'
|
|
}
|