7b6a61a750
When visiting a non-locale prefixed path (`/hello` instead of `/fr/hello`) we don't trigger locale redirects currently so if another locale is matched we need to ensure this is reset to the `defaultLocale` for rendering to prevent a mis-match on the client and the server. This also fixes hydration errors from occurring with `asPath` for `getServerSideProps` pages due to `normalizeLocalePath` expecting only a pathname and `asPath` containing `hash` and `query values also. Fixes: https://github.com/vercel/next.js/issues/18337 Fixes: https://github.com/vercel/next.js/issues/18510
33 lines
844 B
JavaScript
33 lines
844 B
JavaScript
import Link from 'next/link'
|
|
import { useRouter } from 'next/router'
|
|
|
|
export default function Page(props) {
|
|
const router = useRouter()
|
|
|
|
return (
|
|
<>
|
|
<p id="another">another page</p>
|
|
<p id="props">{JSON.stringify(props)}</p>
|
|
<p id="router-locale">{router.locale}</p>
|
|
<p id="router-default-locale">{router.defaultLocale}</p>
|
|
<p id="router-locales">{JSON.stringify(router.locales)}</p>
|
|
<p id="router-query">{JSON.stringify(router.query)}</p>
|
|
<p id="router-pathname">{router.pathname}</p>
|
|
<p id="router-as-path">{router.asPath}</p>
|
|
<Link href="/">
|
|
<a id="to-index">to /</a>
|
|
</Link>
|
|
<br />
|
|
</>
|
|
)
|
|
}
|
|
|
|
export const getServerSideProps = ({ locale, locales, defaultLocale }) => {
|
|
return {
|
|
props: {
|
|
locale,
|
|
locales,
|
|
defaultLocale,
|
|
},
|
|
}
|
|
}
|