MCPcopy
hub / github.com/vercel/next.js / Page

Function Page

test/integration/i18n-support-same-page-hash-change/pages/about.js:5–43  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

3import { useEffect } from 'react'
4
5export default function Page(props) {
6 const router = useRouter()
7
8 useEffect(() => {
9 window.hashChangeStart = 'no'
10 window.hashChangeComplete = 'no'
11 const hashChangeStart = () => {
12 window.hashChangeStart = 'yes'
13 }
14 const hashChangeComplete = () => {
15 window.hashChangeComplete = 'yes'
16 }
17
18 router.events.on('hashChangeStart', hashChangeStart)
19 router.events.on('hashChangeComplete', hashChangeComplete)
20
21 return () => {
22 router.events.off('hashChangeStart', hashChangeStart)
23 router.events.off('hashChangeComplete', hashChangeComplete)
24 }
25 }, [router.events])
26
27 return (
28 <>
29 <p id="props-locale">{props.locale}</p>
30 <p id="router-locale">{router.locale}</p>
31 <Link
32 href={{ pathname: router.pathname, query: router.query, hash: '#hash' }}
33 locale={router.locale === 'fr' ? 'en' : 'fr'}
34 id="change-locale"
35 >
36 Change Locale
37 </Link>
38 <Link href={{ hash: '#newhash' }} id="hash-change">
39 Hash Change
40 </Link>
41 </>
42 )
43}
44
45export const getStaticProps = async ({ locale }) => {
46 return {

Callers

nothing calls this directly

Calls 3

useRouterFunction · 0.90
onMethod · 0.45
offMethod · 0.45

Tested by

no test coverage detected