Eine barrierefreie React-Komponente mit TypeScript bauen
Erzeugen Sie eine typisierte, barrierefreie React-Komponente mit Tests, nach bewährten Praktiken für Komposition und State. Entwickelt für ChatGPT, Claude und Microsoft Copilot. Er enthält 3 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Fortgeschritten · Code · Redaktionelle Prüfung ausstehend
Prompt
Du bist Senior-Frontend-Entwickler mit Spezialisierung auf React, TypeScript und Barrierefreiheit (WCAG 2.2 AA).
Baue die Komponente {{component}} mit diesen Anforderungen:
- Funktionalität: {{functionality}}
- Styling mit: {{styling}}
- Sie muss diese Zustände behandeln: Laden, leer, Fehler und Erfolg.
Technische Anforderungen:
1. Props mit einem exportierten Interface typisiert und sinnvolle Standardwerte.
2. Barrierefreiheit: ARIA-Rollen und -Attribute nur bei Bedarf, sichtbarer Fokus, vollständige Tastaturbedienung und Text für Screenreader.
3. Keine Laufzeitabhängigkeiten außer React und dem gewählten Styling-System; für die Tests nur React Testing Library und user-event.
4. Ein Anwendungsbeispiel der Komponente.
5. Tests mit React Testing Library, die Tastaturinteraktion und die Zustände abdecken.
Erkläre am Ende, welche Entscheidungen du zur Barrierefreiheit getroffen hast und warum.So verwenden Sie ihn
Nennen Sie die Styling-Bibliothek, die Ihr Projekt bereits nutzt, damit das Ergebnis passt. Prüfen Sie die Komponente immer mit einem Screenreader oder dem Barrierefreiheits-Panel des Browsers.
Anwendungsbeispiel
Komponente: Datumsauswahl mit minimalem und maximalem Bereich.
Beispielergebnis
Komponente (Auszug)
export interface CityComboboxProps {
options: string[];
label?: string;
status?: 'loading' | 'error' | 'success';
onSelect: (city: string) => void;
}
export function CityCombobox({ options, label = 'Stadt', status = 'success', onSelect }: CityComboboxProps) {
const [query, setQuery] = useState('');
const [active, setActive] = useState(-1);
const listId = useId();
const results = options.filter((c) => c.toLowerCase().includes(query.toLowerCase()));
function onKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {
if (e.key === 'ArrowDown') setActive((i) => Math.min(i + 1, results.length - 1));
if (e.key === 'ArrowUp') setActive((i) => Math.max(i - 1, 0));
if (e.key === 'Enter' && results[active]) onSelect(results[active]);
if (e.key === 'Escape') setActive(-1);
}
return (
<div className="relative">
<label htmlFor={`${listId}-input`} className="block text-sm font-medium">{label}</label>
<input
id={`${listId}-input`} role="combobox" aria-expanded={results.length > 0} aria-controls={listId}
aria-activedescendant={active >= 0 ? `${listId}-${active}` : undefined}
className="w-full rounded border px-3 py-2 focus-visible:ring-2 focus-visible:ring-blue-600"
value={query} onChange={(e) => setQuery(e.target.value)} onKeyDown={onKeyDown}
/>
<ul id={listId} role="listbox" className="absolute z-10 w-full rounded border bg-white">
{results.map((city, i) => (
<li key={city} id={`${listId}-${i}`} role="option" aria-selected={i === active}
className={i === active ? 'bg-blue-100 px-3 py-1' : 'px-3 py-1'} onMouseDown={() => onSelect(city)}>
{city}
</li>
))}
</ul>
<p role="status" className="sr-only">{status === 'loading' ? 'Wird geladen …' : `${results.length} Ergebnisse`}</p>
</div>
);
}
Barrierefreiheits-Entscheidungen
- Der Fokus bleibt im Eingabefeld,
aria-activedescendantzeigt auf die aktive Option – so empfiehlt es das ARIA-Combobox-Muster. - Die Trefferzahl wird in einem
role="status"-Bereich angesagt, damit Screenreader sie melden, ohne den Fokus zu verschieben …
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · React
- Ausgabetyp
- Code
- Niveau
- Fortgeschritten
- Entwickelt für
- ChatGPT, Claude und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- Komponente, Funktionalität und Styling-System
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Ist meine Komponente damit WCAG-konform?
Nicht automatisch. Sie erhalten eine solide Grundlage, müssen aber trotzdem mit der Tastatur, einem Screenreader wie NVDA oder VoiceOver und einem automatischen Prüftool wie axe testen.
Funktioniert das mit Next.js?
Ja. Die Komponente ist normales React; mit dem App Router von Next.js fügen Sie 'use client' am Anfang der Datei ein, wenn sie State oder Event-Handler verwendet.
Wofür ist dieser Prompt gedacht?
Erzeugen Sie eine typisierte, barrierefreie React-Komponente mit Tests, nach bewährten Praktiken für Komposition und State.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude und Microsoft Copilot entwickelt. Wir haben ihn in diesen Tools noch nicht überprüft, daher können die Ergebnisse variieren.
Wie passe ich den Prompt an?
Klicken Sie auf „Anpassen“ und füllen Sie die Variablen aus (Komponente, Funktionalität und Styling-System). Der Text wird sofort aktualisiert und lässt sich anschließend mit einem Klick kopieren. Die Werte werden nur in Ihrem Browser gespeichert.
Brauche ich Erfahrung, um ihn zu verwenden?
Er ist für Fortgeschrittene: Es hilft, das Thema zu kennen, um guten Kontext zu liefern und das Ergebnis kritisch zu prüfen.
Ist dieser Prompt kostenlos?
Ja. Jeder Prompt von HomeCasa Prompts ist kostenlos, ohne Anmeldung und ohne Abonnement. Sie können ihn auch in beruflichen Projekten verwenden.
Kann ich der KI-Ausgabe vertrauen?
Betrachten Sie sie als hochwertigen Entwurf: Prüfen Sie Daten, Zahlen und wichtige Aussagen immer, bevor Sie etwas veröffentlichen oder Entscheidungen treffen.