Menu
Coddy logo textTech

Lectura de datos del formulario

Parte de la sección Esenciales de Next.js del Journey de React de Coddy — lección 31 de 47.

Tu action recibe un argumento: un objeto FormData. Es un objeto integrado del navegador y solo necesitas un método de él:

export async function addNote(formData) {
    const text = formData.get('text');
    const author = formData.get('author');
    saveNote(text, author);
}

El string que pasas a get() no es el id del input, ni tampoco su etiqueta. Es el atributo name:

<input name="author" />      →  formData.get('author')

Un input sin name es invisible para el formulario. Se renderiza, puedes escribir en él, y su valor simplemente nunca llega: formData.get() devuelve null. Este es el error más común en un primer formulario con server action, y falla de forma silenciosa.

get() siempre devuelve una cadena de texto (o null), por lo que un campo numérico necesita ser convertido:

const quantity = Number(formData.get('quantity'));
challenge icon

Desafío

Fácil

El formulario de notas está conectado, pero no se guarda nada útil: los input no tienen name y la action guarda dos cadenas vacías.

  1. En app/page.jsx, añade name="text" al primer input y name="author" al segundo.
  2. En app/actions.js, lee ambos campos de formData en lugar de usar las cadenas vacías.

Mantén los id como están y mantén la llamada a saveNote(text, author): solo cambian los dos valores sobre ella.

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>
    );
}
quiz iconPonte a prueba

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