Formularios con acción
Parte de la sección Esenciales de Next.js del Journey de React de Coddy. Lección 30 de 47.
En HTML puro, el action de un form es una URL a la que se hace un POST. En Next.js puedes pasarle una función en su lugar:
import { addItem } from './actions';
<form action={addItem}>
<input name="text" />
<button type="submit">Add</button>
</form>Al hacer submit, React hace tres cosas por ti: detiene la recarga de página habitual del navegador al hacer submit, recopila los campos con nombre del formulario en un objeto FormData y llama a tu action con él.
Note lo que no está allí: sin onSubmit, sin event.preventDefault(), sin estado. Y esta página sigue siendo un Server Component: la action son datos que se pasan, no un controlador de eventos, por lo me cruza el límite sin problemas.
Una cosa a tener en cuenta: el item se guarda, pero la list en pantalla no cambiará todavía. La página ya se renderizó en el server, y nada le ha dicho que vuelva a mirar. Dentro de dos lecciones solucionarás eso en una sola línea.
Desafío
PrincipianteLa lista de compras tiene un input y un button, pero nada los conecta al server. La action ya está escrita para ti en app/actions.js.
- En
app/page.jsx, importaaddItemdesde'./actions'. - Envuelve el input y el button en un
<form>conid="add-form". - Dale a ese form
action={addItem}.
Deja intacto el name="text" del input: la action lee el campo por ese nombre.
Pruébalo tú mismo
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Esenciales de Next.js
2Enrutamiento y enlaces
Las carpetas son rutasRutas anidadasEnlaces entre páginasRutas dinámicasPáginas no encontradasRecapitulación: Enrutamiento3Diseños y Metadatos
El diseño raízNavegación compartidaDiseños anidadosMetadatos de la páginaMetadatos dinámicosRecapitulación: Diseños6Server Actions
¿Qué es una Server Action?Formularios con acciónLectura de datos del formularioActualización de la páginaRecapitulación: Server Actions