Cómo actualizar datos
Puedes actualizar datos en Next.js usando las Funciones de Servidor (Server Functions) de React. Esta página explicará cómo puedes crear e invocar Funciones de Servidor.
Funciones de Servidor
Una Función de Servidor es una función asíncrona que se ejecuta en el servidor. Las Funciones de Servidor son inherentemente asíncronas porque son invocadas por el cliente mediante una solicitud de red. Cuando se invocan como parte de una action
, también se les llama Acciones de Servidor (Server Actions).
Por convención, una action
es una función asíncrona pasada a startTransition
. Las Funciones de Servidor se envuelven automáticamente con startTransition
cuando:
- Se pasan a un
<form>
usando la propaction
, - Se pasan a un
<button>
usando la propformAction
- Se pasan a
useActionState
Creación de Funciones de Servidor
Una Función de Servidor puede definirse usando la directiva use server
. Puedes colocar la directiva al inicio de una función asíncrona para marcarla como Función de Servidor, o al inicio de un archivo separado para marcar todas las exportaciones de ese archivo.
Componentes de Servidor
Las Funciones de Servidor pueden incluirse en línea en Componentes de Servidor añadiendo la directiva "use server"
al inicio del cuerpo de la función:
Componentes de Cliente
No es posible definir Funciones de Servidor en Componentes de Cliente. Sin embargo, puedes invocarlas en Componentes de Cliente importándolas desde un archivo que tenga la directiva "use server"
al inicio:
Invocación de Funciones de Servidor
Hay dos formas principales de invocar una Función de Servidor:
- Formularios en Componentes de Servidor y Cliente
- Manejadores de Eventos en Componentes de Cliente
Formularios
React extiende el elemento HTML <form>
para permitir que una Función de Servidor sea invocada con la prop action
de HTML.
Cuando se invoca en un formulario, la función recibe automáticamente el objeto FormData
. Puedes extraer los datos usando los métodos nativos de FormData
:
Nota importante: Cuando se pasan a la prop
action
, las Funciones de Servidor también se conocen como Acciones de Servidor (Server Actions).
Manejadores de Eventos
Puedes invocar una Función de Servidor en un Componente de Cliente usando manejadores de eventos como onClick
.
Ejemplos
Mostrar un estado pendiente
Durante la ejecución de una Función de Servidor, puedes mostrar un indicador de carga con el hook useActionState
de React. Este hook devuelve un booleano pending
:
Revalidar la caché
Después de realizar una actualización, puedes revalidar la caché de Next.js y mostrar los datos actualizados llamando a revalidatePath
o revalidateTag
dentro de la Función de Servidor:
Redireccionar
Puedes redirigir al usuario a una página diferente después de realizar una actualización. Esto se hace llamando a redirect
dentro de la Función de Servidor: