React-Native-Screen mit Expo und TypeScript inklusive aller Zustände
Erstelle einen Screen für eine Mobile-App in React Native und TypeScript mit Lade-, Leer-, Fehler- und Offline-Zustand, optimierter Liste, Barrierefreiheit, Safe Area und Tests mit Testing Library. Entwickelt für ChatGPT, Claude, Gemini und Microsoft Copilot. Er enthält 4 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Fortgeschritten · Code · Redaktionelle Prüfung ausstehend
Prompt
Du bist Senior-Mobile-Entwickler mit Schwerpunkt React Native, Expo und TypeScript und achtest auf Performance und Barrierefreiheit unter iOS und Android.
Kontext:
- Zweck des Screens und Nutzeraktionen: {{screen}}
- Datenquelle (Endpoint, Form der Antwort, Authentifizierung): {{daten}}
- Navigationsbibliothek: {{navigation}}
- Visueller Stil und vorhandene Bibliotheken im Projekt: {{stil}}
Liefere:
1. Dateistruktur: Screen, Kindkomponenten, Daten-Hook und Typen.
2. TypeScript-Typen für API-Antwort und Props, ohne any.
3. Einen Daten-Hook mit Laden, Fehler, erneutem Versuch, Pull-to-Refresh und Abbruch beim Unmount. Nutzt das Projekt schon eine Data-Fetching-Bibliothek, passe dich an; sonst erkläre, wann sie sich lohnen würde.
4. Den vollständigen Screen mit klaren Zuständen: Laden (Skeleton), leer mit Handlungsaufforderung, Fehler mit Button für erneuten Versuch und offline.
5. Listen mit FlatList oder einer optimierten Alternative: stabiler keyExtractor, memoisierte Elemente, Paginierung oder Infinite Scroll, falls sinnvoll.
6. Barrierefreiheit: accessibilityLabel und accessibilityRole, Mindestgrößen für Touch-Ziele, Unterstützung dynamischer Schriftgrößen und korrektes Vorlesen mit VoiceOver und TalkBack.
7. Anpassungsfähiges Layout: SafeAreaView oder Insets, Tastatur (KeyboardAvoidingView bei Formularen), Dark Mode und Unterschiede zwischen iOS und Android.
8. Tests mit React Native Testing Library für Lade-, Fehler- und Erfolgszustand, mit gemockter API.
Einschränkungen:
- Erfinde keine Endpoints oder Felder: Fehlt die Form der Antwort, nutze einen mit [AUSFÜLLEN] markierten Typ und frag mich.
- Füge keine neuen Abhängigkeiten hinzu, ohne sie zu begründen und die Variante ohne Abhängigkeit zu nennen.
- Sind Screen oder Ablauf unklar, frag mich, bevor du Code schreibst.
Format: nummerierte Abschnitte, ein Codeblock pro Datei und kurze Notizen zu Entscheidungen.So verwenden Sie ihn
Füge ein echtes Beispiel der JSON-Antwort deiner API ein und nenne die Bibliotheken, die du schon nutzt. Teste den Screen auf einem iOS- und einem Android-Gerät, im Flugmodus und mit maximaler Schriftgröße.
Anwendungsbeispiel
Screen: Bestellliste des Nutzers mit Statusfilter und Detailansicht beim Antippen · Daten: paginiertes GET /orders mit Token · Navigation: Expo Router · Stil: StyleSheet in Markenfarben.
Beispielergebnis
3. Daten-Hook — hooks/useRezepte.ts
import { useCallback, useEffect, useRef, useState } from 'react';
export type Rezept = { id: string; titel: string; bild: string; minuten: number }; // Typ der id: [AUSFÜLLEN]
type RezepteAntwort = { items: Rezept[]; total: number };
type Status = 'laedt' | 'fehler' | 'ok';
const API_URL = process.env.EXPO_PUBLIC_API_URL;
export function useRezepte(suche: string) {
const [rezepte, setRezepte] = useState<Rezept[]>([]);
const [status, setStatus] = useState<Status>('laedt');
const [aktualisiert, setAktualisiert] = useState(false);
const controller = useRef<AbortController | null>(null);
const laden = useCallback(async (istRefresh = false) => {
controller.current?.abort(); // vorherige Anfrage abbrechen
const ctrl = new AbortController();
controller.current = ctrl;
if (istRefresh) setAktualisiert(true); else setStatus('laedt');
try {
// Name des Suchparameters: [AUSFÜLLEN]
const params = new URLSearchParams({ seite: '1', q: suche });
const res = await fetch(`${API_URL}/api/rezepte?${params}`, { signal: ctrl.signal });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const daten = (await res.json()) as RezepteAntwort;
setRezepte(daten.items);
setStatus('ok');
} catch {
if (!ctrl.signal.aborted) setStatus('fehler');
} finally {
if (!ctrl.signal.aborted) setAktualisiert(false);
}
}, [suche]);
useEffect(() => {
laden();
return () => controller.current?.abort(); // beim Verlassen des Screens
}, [laden]);
return { rezepte, status, aktualisiert, erneutVersuchen: () => laden(), aktualisieren: () => laden(true) };
}
Keine neuen Abhängigkeiten: Wächst die App (Cache über Screens hinweg, Infinite Pagination), lohnt sich eine Data-Fetching-Bibliothek. Der Screen nutzt status, um Skeleton, Fehler mit „Erneut versuchen“-Button oder die FlatList anzuzeigen…
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · Mobile Apps
- Ausgabetyp
- Code
- Niveau
- Fortgeschritten
- Entwickelt für
- ChatGPT, Claude, Gemini und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- Zweck des Screens, Datenquelle, Navigation und Stil und Bibliotheken
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Funktioniert der Code auch in einer App ohne Expo?
Größtenteils ja, da Komponenten und Hooks reines React Native sind. Teile mit Expo-Modulen, etwa Verbindungserkennung oder Schriften, ändern sich; frag das Modell nach der Variante für React Native CLI.
Warum so viele Zustände für einen Screen?
Weil mobile Netze oft ausfallen und ein leerer Bildschirm wie ein App-Fehler wirkt. Lade-, Leer-, Fehler- und Offline-Zustände verbessern das Erlebnis und vermeiden schlechte Bewertungen.
Wofür ist dieser Prompt gedacht?
Erstelle einen Screen für eine Mobile-App in React Native und TypeScript mit Lade-, Leer-, Fehler- und Offline-Zustand, optimierter Liste, Barrierefreiheit, Safe Area und Tests mit Testing Library.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude, Gemini 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 (Zweck des Screens, Datenquelle, Navigation und Stil und Bibliotheken). 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.