Quest for Codev2.0.0
/
SIGN IN
next.js/test/e2e/app-dir/instant-navigation-testing-api/fixtures/default/app/runtime-prefetch-target/page.tsx
page.tsx49 lines1.2 KB
import { Suspense } from 'react'
import { connection } from 'next/server'

export const unstable_instant = {
  samples: [{ searchParams: { myParam: 'testValue' } }],
}
export const unstable_prefetch = 'force-runtime'

type SearchParams = { [key: string]: string | string[] | undefined }

export default async function RuntimePrefetchTargetPage({
  searchParams,
}: {
  searchParams: Promise<SearchParams>
}) {
  return (
    <div>
      <h1>Runtime Prefetch Target</h1>
      <Suspense fallback={<div data-testid="outer-loading">Loading...</div>}>
        <RuntimePrefetchableContent searchParams={searchParams} />
      </Suspense>
      <Suspense
        fallback={
          <div data-testid="inner-loading">Loading dynamic content...</div>
        }
      >
        <DynamicContent />
      </Suspense>
    </div>
  )
}

async function RuntimePrefetchableContent({
  searchParams,
}: {
  searchParams: Promise<SearchParams>
}) {
  const params = await searchParams
  const myParam = params.myParam

  return <p data-testid="search-param-value">{`myParam: ${myParam}`}</p>
}

async function DynamicContent() {
  await connection()

  return <div data-testid="dynamic-content">Dynamic content loaded</div>
}