Capítulo 168 de 456
Com Cache Components habilitado, io() sinaliza ao Next.js que um valor síncrono não determinístico (new Date(), Math.random(), driver sync de DB) deve ser excluído do shell estático em vez de capturado nele.
function io(): Promise<void>, sem parâmetros; await io() suspende durante o prerender (precisa de <Suspense> acima).'use cache'.io() suspende como qualquer async function (o código após pode ser cacheado com use cache e prefetched); connection() fica suspenso até uma navegação real chegar ao servidor, bloqueando prefetches. Prefira io(); use connection() só quando precisar esperar por request real.// app/page.tsx
import { Suspense } from 'react'
import { io } from 'next/cache'
export default function Page() {
return (
<Suspense fallback={<p>Loading...</p>}>
<CurrentTime />
</Suspense>
)
}
async function CurrentTime() {
await io()
return <p>{new Date().toISOString()}</p>
}
new Date() do shell estático — a fallback do Suspense é o que entra no prerender.// Client Component: usar io() com o hook `use` do React
'use client'
import { use } from 'react'
import { io } from 'next/cache'
export function CurrentTime() {
use(io())
return <div>{Date.now()}</div>
}
io() para não capturar valores não determinísticos no shell.io() se o componente já usa uma Request-time API (cookies(), headers()) — essa já é o ponto de suspensão.fetch/query async já dentro de <Suspense> — o await já é o ponto de suspensão.io() a connection() sempre que o código seguinte puder ser cacheado e prefetched.| Version | Changes |
|---|---|
| v16.3.0 | io adicionado |
io() ter efeito.