React-Registrierungsformular

Baue ein Registrierungsformular in React ganz ohne Backend. Erfasse Anmeldedaten mit kontrollierten Inputs und poste an Formpaste. Kopiere die Komponente und ergänze deinen Zugangsschlüssel - Einsendungen landen in deinem Posteingang oder deinem eigenen System.

So baust du es

  1. Erstelle ein Formular in deinem Formpaste-Dashboard und kopiere den Zugangsschlüssel.
  2. Kopiere die React-Komponente oben und wähle dein Styling.
  3. Ersetze YOUR_ACCESS_KEY_HERE durch deinen Zugangsschlüssel und deploye.

Prompt für deinen KI-Coding-Agenten

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.

Oder verbinde den Formpaste-MCP-Server mit Claude Code, Codex, Cursor, Claude Desktop, VS Code oder einem beliebigen mcp-remote-Client. Zur Einrichtungsanleitung.

React-Fallstricke

Ein React-Kontaktformular ist einfach eine Komponente mit einem Submit-Handler, der an Formpaste postet. Es gibt kein eigenes Backend und keine eigene API-Route. Platziere den Fetch in einer Komponente, die im Browser läuft, und du bist fertig.

Es ist eine Client-Komponente

Der onSubmit-Fetch läuft im Browser, das Formular lebt also in einer normalen Client-Komponente. In einer reinen React-SPA ist ohnehin jede Komponente client-seitig; in einem Framework mit Server-Komponenten fügst du die Client-Grenze dort ein, wo der Fetch läuft.

Keine API-Route, kein Proxy

Du postest nicht an eine eigene /api-Route und leitest von dort weiter. Die Komponente postet direkt an den Formpaste-Endpunkt, das spart einen kompletten Server-Roundtrip und einen Mailer, den du sonst selbst schreiben müsstest.

Controlled oder uncontrolled, beides funktioniert

Lies die Werte per FormData über das Formularelement (uncontrolled) oder aus useState (controlled). Uncontrolled bedeutet weniger Code für ein einfaches Kontaktformular; controlled ist praktisch, wenn du schon während der Eingabe validierst.

Verarbeite die Antwort im State

Der Endpunkt liefert JSON zurück (success, message, id). Warte auf den Fetch und setze einen State, um deine eigene Erfolgs- oder Fehler-UI anzuzeigen, oder hinterlege eine Weiterleitung im Dashboard und überspringe die Client-seitige Verarbeitung.

Worauf es ankommt

Formpaste ist ein Formular-Backend, kein Auth-Anbieter

Ein Registrierungsformular sammelt Angaben und schickt sie dir per E-Mail oder leitet sie an dein System weiter. Es erstellt keine Login-Konten und speichert keine Passwörter. Für echte Authentifizierung verbindest du die Einsendung mit deinem Auth-Tool und behandelst das Formular niemals als Speicherort für Zugangsdaten.

Verschicke niemals Passwörter im Klartext per E-Mail

Wenn du hier ein Passwort erfasst, leite die Einsendung per Webhook an deinen eigenen Registrierungs-Endpunkt weiter, statt sie in einem Posteingang landen zu lassen. Noch besser: Erfasse nur die Angaben, die du brauchst, und lass dein Auth-Tool das Passwort setzen.

Validiere auch clientseitig

Gleiche die beiden Passwortfelder ab und verlange im Browser ein gültiges E-Mail-Format, damit Fehler vor dem Absenden auffallen. Formpaste filtert Spam trotzdem serverseitig.

So funktioniert es

Drei einfache Schritte, bis Formular-Einsendungen in deinem E-Mail-Posteingang landen.
Erstelle dein Formular, setze die action-URL auf den Formpaste-Endpunkt und trage deinen Zugangsschlüssel ein.

1

Formular erstellen

Melde dich an, verifiziere deine E-Mail und erstelle einen Zugangsschlüssel im Dashboard.

2

Code kopieren

Füge das Snippet oben in dein Projekt ein. Wähle CSS oder Tailwind passend zu deiner Website.

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">Vollständiger Name
    <input type="text" name="name" placeholder="Dein Name" 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">E-Mail
    <input type="email" name="email" placeholder="du@beispiel.de" 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">Passwort wählen
    <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">Passwort bestätigen
    <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">Konto erstellen</button>
    </form>
  );
}
3

Zugangsschlüssel hinzufügen

Ersetze den Platzhalter durch deinen Zugangsschlüssel, um Einsendungen zu empfangen.

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

React-Registrierungsformular FAQ

Formular einfügen. Einsendungen erhalten.

Sofort, ohne Backend, Server oder Datenbanken einzurichten. 250 Einsendungen/Monat kostenlos - keine Kreditkarte.

Andere React-Formulare