Capítulo 175 de 456

refresh

Core Idea

Atualiza o client router a partir de dentro de um Server Action, sem revalidar cache de dados.

Key Concepts

  • refresh(): function refresh(): void; só pode ser chamado dentro de Server Actions. Não funciona em Route Handlers, Client Components, ou qualquer outro contexto.

Code Examples

// app/actions.ts
'use server'
import { refresh } from 'next/cache'

export async function createPost(formData: FormData) {
  const title = formData.get('title')
  const content = formData.get('content')
  const post = await db.post.create({ data: { title, content } })
  refresh()
}
  • O que demonstra: forçar atualização do client router após uma mutação, sem envolver revalidatePath/revalidateTag.
// app/api/posts/route.ts — uso incorreto, lança erro
import { refresh } from 'next/cache'

export async function POST() {
  // Isso lança erro
  refresh()
}
  • O que demonstra: refresh() fora de Server Action é erro em runtime.

Anti-patterns

  • Chamar em Route Handler: lança erro; refresh é exclusivo de Server Actions.

Key Takeaways

  1. refresh() não invalida cache de dados; use revalidatePath/revalidateTag/updateTag para isso.
  2. Restrito estritamente a Server Actions.

Connects To

  • Server Actions: único contexto válido de uso.
  • revalidatePath / revalidateTag / updateTag: funções complementares para invalidação de cache de dados.