TextInput — was es ist, Texteingabe und React Native

Autor: IT Sectr Veröffentlicht: 2026-07-05 Lesezeit: 9 Min.

Die TextInput-Komponente in React Native ist das primäre Element für die Texteingabe durch den Benutzer, analog zum HTML-Element input. TextInput unterstützt kontrollierten und unkontrollierten Zustand, verschiedene Tastaturtypen, Eingabemasken und die Behandlung von Fokus-Ereignissen. Laut React Native Docs, 2024 ist TextInput eine Schlüsselkomponente für Formulare, Suche, Chats und alle Szenarien mit Benutzereingabe. Die Komponente passt sich automatisch an die Plattform an und verwendet nativ UITextField auf iOS und EditText auf Android.

Wichtige Punkte

  • TextInput — eine React Native-Komponente zur Texteingabe, analog zu HTML input
  • Unterstützt kontrollierten Zustand über value + onChangeText
  • Bietet Tastaturtypen: default, numeric, email, phone, url
  • Wird als UITextField auf iOS und EditText auf Android gerendert
  • Unterstützt mehrzeilige Eingabe, placeholder und secureTextEntry für Passwörter

Was ist TextInput in React Native

TextInput ist eine React Native-Komponente, die es Benutzern ermöglicht, Text über die Gerätetastatur einzugeben. Sie ist der grundlegende Baustein für Registrierungsformulare, Suchleisten, Nachrichteneingabefelder und alle anderen Szenarien, die Benutzereingaben erfordern. Im Gegensatz zur Webentwicklung, wo es separate Eingabetypen (text, email, password, search) gibt, werden in React Native all diese Varianten durch eine einzige TextInput-Komponente mit unterschiedlichen Props implementiert.

TextInput unterstützt zwei Betriebsmodi: kontrolliert(über den React-Status verwaltet) und unkontrolliert (mithilfe einer Ref). Im kontrollierten Modus wird der Feldwert im Komponentenstatus gespeichert und über den onChangeText-Callback aktualisiert. Dieser Ansatz wird für die meisten Anwendungen empfohlen, da er eine einzige Quelle der Wahrheit bietet und die Validierung vereinfacht.

Laut React Native Handling Text Input, 2024 passt sich TextInput automatisch an die Plattform an: auf iOS verwendet es natives UITextField, auf Android — EditText. Dies gewährleistet die ordnungsgemäße Funktion von Autovervollständigung, Autokorrektur und Systemmenüs (Ausschneiden/Kopieren/Einfügen) ohne zusätzliche Konfiguration.

TextInput Eigenschaften und API

TextInput bietet eine umfangreiche Reihe von Props zur Steuerung von Eingabe, Erscheinungsbild und Verhalten. Alle Props sind in mehrere Kategorien unterteilt: Wertverwaltung, Tastaturtyp, Styling, Ereignisse und plattformspezifische Funktionen.

Props zur Wertverwaltung

value — der aktuelle Feldwert (für kontrollierten Modus). onChangeText — Callback, der bei jeder Textänderung aufgerufen wird. placeholder — Hinweistext, der angezeigt wird, wenn das Feld leer ist. defaultValue — Anfangswert für den unkontrollierten Modus. maxLength begrenzt die maximale Anzahl von Zeichen, die der Benutzer eingeben kann.

TextInput-Ereignisse

Die Komponente unterstützt onFocus(Feld hat Fokus erhalten), onBlur (Feld hat Fokus verloren), onSubmitEditing (Benutzer hat Enter/Return gedrückt), onKeyPress (Tastendruck). Das onEndEditing-Ereignis wird nach Abschluss der Bearbeitung beim Verlust des Fokus aufgerufen. Diese Callbacks ermöglichen die Implementierung komplexer Validierungs- und Formularübermittlungslogik.

Plattformspezifische Props

Auf iOS: clearButtonMode (Löschtaste), keyboardAppearance (helles/dunkles Tastatur), returnKeyType (Typ der Return-Taste), enablesReturnKeyAutomatically. Auf Android: textContentType (Autofill), underlineColorAndroid, inlineImageLeft. secureTextEntry funktioniert auf beiden Plattformen für die Passworteingabe.

Kontrollierte und unkontrollierte Eingabe

In React Native kann TextInput in zwei Modi arbeiten. Im kontrollierten Modus verwaltet React den Feldwert: Sie übergeben den Wert aus dem Status und aktualisieren ihn über onChangeText. Im unkontrollierten Modus initialisiert React nur das Feld, und der DOM-ähnliche Wert wird innerhalb der nativen Komponente gespeichert.

Kontrollierter TextInput

Der kontrollierte Modus wird für alle Formulare empfohlen, die eine Validierung, Filterung oder Formatierung der Eingabedaten erfordern. Der Feldstatus ist mit dem React-Komponentenstatus synchronisiert, was eine vollständige Kontrolle über den Wert ermöglicht.

js
const LoginForm = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');

    return (
        <View>
            <TextInput
                placeholder="Email"
                value={email}
                onChangeText={setEmail}
                keyboardType="email-address"
                autoCapitalize="none"
            />
            <TextInput
                placeholder="Password"
                value={password}
                onChangeText={setPassword}
                secureTextEntry
                maxLength={32}
            />
        </View>
    );
};

In diesem Beispiel verwenden beide Felder den kontrollierten Modus. Das E-Mail-Feld hat den Tastaturtyp email-address und die automatische Großschreibung ist deaktiviert. Das Passwortfeld verwendet secureTextEntry zum Ausblenden der Eingabezeichen und ist über maxLength auf 32 Zeichen begrenzt.

Unkontrollierter TextInput

Der unkontrollierte Modus eignet sich für einfache Felder, die keine Validierung oder sofortige Reaktion auf Eingaben erfordern. Der Feldwert wird zum Zeitpunkt der Formularübermittlung über eine Ref abgerufen.

js
const SimpleSearch = () => {
    const inputRef = useRef(null);

    const handleSearch = () => {
        console.log(inputRef.current.value());
    };

    return (
        <TextInput
            ref={inputRef}
            placeholder="Search..."
            onSubmitEditing={handleSearch}
        />
    );
};

Im unkontrollierten Modus rendert die Komponente schneller, da sie keine Status Synchronisation bei jeder Textänderung erfordert. Allerdings verlieren Sie die Möglichkeit, Eingaben in Echtzeit zu filtern, zu formatieren oder zu validieren.

Tastaturtypen und Plattformfunktionen

TextInput unterstützt verschiedene Tastaturtypen, die das Layout an das erwartete Eingabeformat anpassen. Die Wahl des richtigen Tastaturtyps verbessert die Benutzererfahrung und reduziert Eingabefehler auf mobilen Geräten.

keyboardType-WertBeschreibungVerwendung
defaultStandard alphabetische TastaturVorname, Nachname, Adresse
numericNumerische Tastatur (nur Ziffern)Alter, Menge, PIN-Code
email-addressTastatur mit @ und .comE-Mail-Feld im Registrierungsformular
phone-padTelefontastatur mit + und #Telefonnummer
urlTastatur mit / und .comEingabe einer Webadresse
decimal-padNumerische Tastatur mit DezimalpunktPreis, Gewicht, Größe

Auf iOS sind zusätzliche Typen verfügbar: numbers-and-punctuation, twitter, web-search (mit Sprachsuche). Auf Android ist auch visible-password verfügbar (zeigt Passwort an). Die Wahl des richtigen keyboardType ist ein wichtiger Aspekt der UX mobiler Anwendungen.

Zu den Plattformfunktionen gehören auch autoCapitalize (automatische Großschreibung des ersten Wortes), autoCorrect (Autokorrektur), spellCheck (Rechtschreibprüfung), textContentType (Autofill auf iOS). Diese Props funktionieren auf jeder Plattform unterschiedlich und erfordern Tests.

Praktische Beispiele mit TextInput

Betrachten wir zwei reale Szenarien: ein mehrzeiliges Feld für die Nachrichteneingabe und ein Feld mit maskierter Telefonnummerneingabe. Beide verwenden TextInput mit verschiedenen Props, um das gewünschte Verhalten zu erreichen.

Beispiel 1: Mehrzeiliges Feld für Nachrichten

Für die Eingabe von langem Text (Kommentare, Beschreibungen) wechselt TextInput über die Prop multiline in den mehrzeiligen Modus. In diesem Modus wächst das Feld vertikal und unterstützt Zeilenumbrüche.

js
const MessageInput = ({ onSend }) => {
    const [text, setText] = useState('');

    return (
        <TextInput
            style={styles.input}
            multiline
            numberOfLines={4}
            placeholder="Write a message..."
            value={text}
            onChangeText={setText}
            textAlignVertical="top"
        />
    );
};

Die Prop multiline aktiviert den mehrzeiligen Modus, numberOfLines legt die anfängliche Höhe in Zeilen fest. textAlignVertical: 'top' richtet den Text am oberen Rand aus (standardmäßig zentriert Android mehrzeiligen TextInput vertikal).

Beispiel 2: Feld mit Telefonnummernformatierung

Für die Eingabe einer Telefonnummer ist häufig eine Echtzeitformatierung erforderlich. Durch die Kombination von onChangeText mit regulären Ausdrücken können Sie eine Eingabemaske implementieren.

js
const PhoneInput = () => {
    const [phone, setPhone] = useState('');

    const formatPhone = (text) => {
        const cleaned = text.replace(/\D/g, '');
        if (cleaned.length <= 11) {
            return cleaned.replace(
                /(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/,
                '+$1 ($2) $3 $4 $5'
            );
        }
        return cleaned;
    };

    return (
        <TextInput
            keyboardType="phone-pad"
            value={phone}
            onChangeText={(t) => setPhone(formatPhone(t))}
            placeholder="+7 (999) 123 45 67"
            maxLength={20}
        />
    );
};

Die Funktion formatPhone entfernt alle nicht numerischen Zeichen und formatiert die Nummer in ein standardmäßiges internationales Format. keyboardType: 'phone-pad' zeigt die Telefontastatur an. Dieser Ansatz verbessert die UX bei der Eingabe von Telefonnummern und verhindert Formatierungsfehler.

Häufig gestellte Fragen

Was ist der Unterschied zwischen value und defaultValue in TextInput?

value wird im kontrollierten Modus verwendet — React verwaltet den angezeigten Text über den Status. defaultValue wird im unkontrollierten Modus verwendet — es legt den Anfangswert fest, und spätere Änderungen werden innerhalb der Komponente gespeichert.

Wie blende ich den eingegebenen Text für Passwörter aus?

Setzen Sie die Prop secureTextEntry auf true. TextInput blendet die eingegebenen Zeichen aus und ersetzt sie durch Punkte oder Sternchen. Für zusätzliche Sicherheit können Sie es mit maxLength und autoCapitalize: 'none' kombinieren.

Warum wird onChangeText bei jedem Tastendruck aufgerufen?

onChangeText wird bei jeder Textänderung aufgerufen, einschließlich Einfügen und Löschen eines einzelnen Zeichens. Dies ist das normale Verhalten einer kontrollierten Komponente. Zur Optimierung können Sie debounce verwenden oder den Status bei onEndEditing aktualisieren.

Wie erstelle ich TextInput mit einem Symbol darin?

TextInput unterstützt keine verschachtelten Elemente direkt. Die Lösung besteht darin, einen View-Container mit Flexbox zu erstellen, in dem Sie ein Symbol und TextInput platzieren. Der Containerstil imitiert den Rahmen des Eingabefelds, und TextInput dehnt sich aus, um den verbleibenden Platz zu füllen.

Wie entferne ich die Unterstreichung von TextInput auf Android?

Auf Android hat TextInput standardmäßig eine untere Grenze (Material Design). Deaktivieren Sie sie mit underlineColorAndroid: 'transparent'. Diese Prop funktioniert nur auf Android und entfernt die visuelle Linie unter dem Text.

Zusammenfassung

  • TextInput — die wichtigste React Native-Komponente für die Texteingabe, analog zu HTML input mit erweiterten Funktionen
  • Unterstützt kontrollierten (value + onChangeText) und unkontrollierten Modus
  • Bietet Tastaturtypen (default, numeric, email, phone, url) und secureTextEntry für Passwörter
  • Mehrzeilenmodus über multiline mit numberOfLines und textAlignVertical
  • Wichtige Ereignisse: onFocus, onBlur, onChangeText, onSubmitEditing, onEndEditing
  • Plattformspezifische Props umfassen textContentType (iOS), underlineColorAndroid (Android)
  • Für Eingabemasken verwenden Sie onChangeText mit Formatierung über reguläre Ausdrücke

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch