Formulario de registro React

Construye un formulario de registro en React sin backend. Recopila los datos de alta con inputs controlados y envía el POST a Formpaste. Copia el componente y añade tu clave de acceso: los envíos llegan a tu bandeja de entrada o a tu propio sistema.

Como construirlo

  1. Crea un formulario en tu panel de Formpaste y copia su clave de acceso.
  2. Copia el componente de React de arriba y elige tu estilo.
  3. Reemplaza YOUR_ACCESS_KEY_HERE con tu clave de acceso y despliega.

Prompt para tu agente de programación con IA

Add a Formpaste registration form to my React app. Use a component with name, email and password fields that POSTs as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key input. Note that this collects details only and is not an auth system.

O conecta el servidor MCP de Formpaste con Claude Code, Codex, Cursor, Claude Desktop, VS Code o cualquier cliente mcp-remote. Ver la guía de configuración.

Puntos claves de React

Un formulario de contacto en React es solo un componente con un manejador de submit que envía el POST a Formpaste. No hay backend ni ruta de API propia. Coloca el fetch en un componente que se ejecute en el navegador y ya está.

Es un componente cliente

El fetch del onSubmit se ejecuta en el navegador, así que el formulario vive en un componente cliente normal. En una SPA de React puro todo componente ya es del lado del cliente; en un framework con componentes de servidor, agrega el límite de cliente donde se ejecuta el fetch.

Sin ruta de API, sin proxy

No envías el POST a tu propio endpoint /api para reenviarlo desde ahí. El componente envía el POST directamente al endpoint de Formpaste, lo que elimina todo un viaje de ida y vuelta al servidor y un mailer que de otra forma tendrías que escribir.

Controlado o no controlado, ambos funcionan

Lee los valores desde un FormData sobre el elemento form (no controlado) o desde useState (controlado). No controlado es menos código para un formulario de contacto sencillo; controlado es útil cuando validas mientras el usuario escribe.

Maneja la respuesta en el estado

El endpoint devuelve JSON (success, message, id). Espera el fetch y asigna un estado para mostrar tu propia interfaz de éxito o error, o configura una redirección en el panel y evita el manejo del lado del cliente.

Que debes acertar

Formpaste es un backend de formularios, no un proveedor de autenticación

Un formulario de registro recopila datos y te los envía por correo o los reenvía a tu sistema. No crea cuentas de acceso ni almacena contraseñas. Para una autenticación real, conecta el envío a tu herramienta de autenticación y nunca trates el formulario como un almacén de credenciales.

Nunca envíes contraseñas en texto plano por correo

Si recopilas una contraseña aquí, reenvía el envío a tu propio endpoint de registro mediante un webhook en lugar de dejar que llegue a una bandeja de entrada. Mejor aún, captura solo los datos que necesitas y deja que tu proveedor de autenticación establezca la contraseña.

Valida también en el cliente

Haz coincidir los dos campos de contraseña y exige un formato de correo válido en el navegador para que la gente corrija errores antes de enviar. Formpaste igual filtra el spam en el servidor.

Cómo funciona

Tres pasos simples para que los envíos de formularios lleguen a tu bandeja de entrada.
Crea tu formulario, apunta la URL de action al endpoint de Formpaste y añade tu clave de acceso.

1

Crea tu formulario

Regístrate, verifica tu correo y crea una clave de acceso en tu panel.

2

Copia el código

Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.

export function ContactForm() {
  async function onSubmit(e) {
    e.preventDefault();
    const form = new FormData(e.currentTarget);
    await fetch("https://api.formpaste.com/submit", { method: "POST", body: new URLSearchParams(form) });
  }

  return (
    <form onSubmit={onSubmit} className="mx-auto flex w-full max-w-md flex-col gap-4 rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-800 dark:bg-gray-950">
      <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE" />
      <label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Nombre completo
    <input type="text" name="name" placeholder="Tu nombre" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
      <label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Correo electrónico
    <input type="email" name="email" placeholder="tu@ejemplo.com" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
      <label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Elige una contraseña
    <input type="text" name="password" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
      <label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Confirma la contraseña
    <input type="text" name="confirm" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
      <button type="submit" className="w-full rounded-md bg-gray-900 px-4 py-2 text-sm font-medium text-white shadow-sm transition-colors hover:bg-gray-800 disabled:opacity-60 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200">Crear cuenta</button>
    </form>
  );
}
3

Añade tu clave de acceso

Reemplaza el marcador por tu clave de acceso para empezar a recibir envíos.

<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

Formulario de registro React FAQ

Pega un formulario. Recibe envíos.

Al instante, sin configurar ningún backend, servidor ni base de datos. 250 envíos/mes gratis, sin tarjeta de crédito.

Otros formularios de React