TextInput — bu nədir, mətn daxil etmə və React Native

Müəllif: IT Sectr Dərc olunub: 2026-07-05 Oxuma vaxtı: 9 dəq

React Native-də TextInput komponenti — istifadəçinin mətn daxil etməsi üçün əsas elementdir, HTML input elementinin analoqudur. TextInput idarə olunan və idarə olunmayan vəziyyəti, müxtəlif klaviatura tiplərini, daxiletmə maskalarını və fokus hadisələrinin işlənilməsini dəstəkləyir. React Native Docs, 2024-ə görə, TextInput formalar, axtarış, söhbətlər və istifadəçi daxiletməsi olan istənilən ssenarilər üçün əsas komponentdir. Komponent avtomatik olaraq platformaya uyğunlaşır — iOS-da UITextField, Android-də isə EditText istifadə edir.

Əsas məqamlar

  • TextInput — React Native-də mətn daxil etmə komponenti, HTML input analoqu
  • İdarə olunan vəziyyəti value + onChangeText vasitəsilə dəstəkləyir
  • Klaviatura tiplərini təmin edir: default, numeric, email, phone, url
  • iOS-da UITextField, Android-də EditText kimi render olunur
  • Çoxsətirli daxiletmə, placeholder və şifrələr üçün secureTextEntry dəstəkləyir

React Native-də TextInput nədir

TextInput — istifadəçiyə cihazın klaviaturasından mətn daxil etməyə imkan verən React Native komponentidir. Qeydiyyat formaları, axtarış sətirləri, mesaj daxiletmə sahələri və istifadəçi daxiletməsi tələb olunan digər ssenarilər üçün əsas tikinti blokudur. Veb inkişafdan fərqli olaraq, burada ayrıca input tipləri (text, email, password, search) mövcud deyil — React Native-də bütün bu variantlar müxtəlif xassələrə malik vahid TextInput komponenti vasitəsilə reallaşdırılır.

TextInput iki iş rejimini dəstəkləyir: idarə olunan (React vəziyyəti vasitəsilə idarə olunan) və idarə olunmayan (ref ilə). İdarə olunan rejimdə sahənin dəyəri komponentin vəziyyətində saxlanılır və onChangeText callback-i vasitəsilə yenilənir. Bu yanaşma əksər tətbiqlər üçün tövsiyə olunur, çünki vahid həqiqət mənbəyini təmin edir və validasiyanı sadələşdirir.

React Native Handling Text Input, 2024-ə görə, TextInput avtomatik olaraq platformaya uyğunlaşır: iOS-da yerli UITextField, Android-də isə EditText istifadə olunur. Bu, əlavə konfiqurasiya olmadan avtomatik dəyişdirmə, avtokorreksiya və sistem menyularının (kəs/kopyala/yapışdır) düzgün işləməsini təmin edir.

TextInput komponentinin xassələri və API

TextInput daxiletmə, görünüş və davranışı idarə etmək üçün geniş xassələr dəsti təqdim edir. Bütün xassələr bir neçə kateqoriyaya bölünür: dəyərin idarə edilməsi, klaviatura növü, stilləşdirmə, hadisələr və platforma xüsusiyyətləri.

Dəyərin idarə edilməsi xassələri

value — sahənin cari dəyəri (idarə olunan rejim üçün). onChangeText — mətn hər dəfə dəyişdikdə çağırılan callback. placeholder — sahə boş olduqda göstərilən ipucu mətni. defaultValue — idarə olunmayan rejim üçün ilkin dəyər. maxLength istifadəçinin daxil edə biləcəyi maksimum simvol sayını məhdudlaşdırır.

TextInput hadisələri

Komponent onFocus (sahə fokus aldı), onBlur (sahə fokus itirdi), onSubmitEditing (istifadəçi Enter/Return düyməsini basdı), onKeyPress (düyməyə basma) hadisələrini dəstəkləyir. onEndEditing hadisəsi redaktə başa çatdıqdan sonra fokus itirildikdə çağırılır. Bu callback-lər mürəkkəb validasiya və formaların göndərilməsi məntiqini reallaşdırmağa imkan verir.

Platforma xassələri

iOS-da mövcuddur: clearButtonMode (təmizləmə düyməsi), keyboardAppearance (açıq/tünd klaviatura), returnKeyType (Return düyməsinin növü), enablesReturnKeyAutomatically. Android-də mövcuddur: textContentType (avtomatik doldurma), underlineColorAndroid, inlineImageLeft. secureTextEntry hər iki platformada şifrələrin daxil edilməsi üçün işləyir.

İdarə olunan və idarə olunmayan daxiletmə

React Native-də TextInput iki rejimdə işləyə bilər. İdarə olunan rejimdə React sahənin dəyərini idarə edir: siz vəziyyətdən value ötürür və onChangeText vasitəsilə yeniləyirsiniz. İdarə olunmayan rejimdə React yalnız sahəni işə salır, DOM-a bənzər dəyər isə yerli komponent daxilində saxlanılır.

İdarə olunan TextInput

İdarə olunan rejim validasiya, filtrləmə və ya daxil edilən məlumatların formatlaşdırılması tələb olunan bütün formalar üçün tövsiyə olunur. Sahənin vəziyyəti React komponentinin vəziyyəti ilə sinxronlaşdırılır ki, bu da dəyər üzərində tam nəzarət verir.

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>
    );
};

Bu nümunədə hər iki sahə idarə olunan rejimdən istifadə edir. Email sahəsi email-address klaviatura növünə malikdir və avtomatik böyük hərf söndürülüb. Şifrə secureTextEntry istifadə edərək daxil edilən simvolları gizlədir və maxLength vasitəsilə 32 simvolla məhdudlaşdırılıb.

İdarə olunmayan TextInput

İdarə olunmayan rejim validasiya və ya daxiletməyə ani reaksiya tələb olunmayan sadə sahələr üçün uyğundur. Sahənin dəyəri formanın göndərilməsi zamanı ref vasitəsilə əldə edilir.

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

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

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

İdarə olunmayan rejimdə komponent daha sürətli render olunur, çünki hər mətn dəyişikliyində vəziyyətin sinxronlaşdırılması tələb olunmur. Bununla belə, siz real vaxtda daxiletməni filtrləmək, formatlaşdırmaq və ya validasiya etmək imkanını itirirsiniz.

Klaviatura tipləri və platforma xüsusiyyətləri

TextInput müxtəlif klaviatura tiplərini dəstəkləyir, onlar düzülüşü gözlənilən daxiletmə formatına uyğunlaşdırır. Düzgün klaviatura növünün seçilməsi istifadəçi təcrübəsini yaxşılaşdırır və mobil cihazlarda daxiletmə xətalarının sayını azaldır.

keyboardType dəyəriTəsvirNə vaxt istifadə etməli
defaultStandart əlifba klaviaturasıAd, soyad, ünvan
numericRəqəm klaviaturası (yalnız rəqəmlər)Yaş, miqdar, PIN kod
email-address@ və .com olan klaviaturaQeydiyyat formasında email sahəsi
phone-pad+ və # olan telefon klaviaturasıTelefon nömrəsi
url/ və .com olan klaviaturaVeb ünvanının daxil edilməsi
decimal-padOnluq nöqtəsi olan rəqəm klaviaturasıQiymət, çəki, ölçü

iOS-da əlavə tiplər mövcuddur: numbers-and-punctuation (rəqəmlər və durğu işarələri), twitter, web-search (səsli axtarışla). Android-də visible-password (şifrəni göstərir) da mövcuddur. Düzgün keyboardType seçimi mobil tətbiq UX-nin vacib aspektidir.

Platforma xüsusiyyətlərinə həmçinin autoCapitalize (ilk sözün avtomatik böyük hərfi), autoCorrect (avtokorreksiya), spellCheck (orfoqrafiya yoxlaması), textContentType (iOS-da avtomatik doldurma) daxildir. Bu xassələr hər platformada fərqli işləyir və sınaq tələb edir.

TextInput ilə praktik nümunələr

İki real ssenariyə baxaq: mesaj daxil etmək üçün çoxsətirli sahə və telefon nömrəsinin maskalanmış daxiletməsi olan sahə. Hər ikisi istənilən davranışı əldə etmək üçün müxtəlif xassələrlə TextInput istifadə edir.

Nümunə 1: mesaj üçün çoxsətirli sahə

Uzun mətnin daxil edilməsi üçün (şərhlər, təsvir) TextInput multiline xassəsi vasitəsilə çoxsətirli rejimə keçir. Bu rejimdə sahə şaquli olaraq böyüyür və sətir keçidlərini dəstəkləyir.

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"
        />
    );
};

multiline xassəsi çoxsətirli rejimi aktivləşdirir, numberOfLines sətirlərdə ilkin hündürlüyü təyin edir. textAlignVertical: 'top' mətni yuxarı kənara düzləndirir (Android-də çoxsətirli TextInput standart olaraq mətni şaquli mərkəzləşdirir).

Nümunə 2: telefon nömrəsinin formatlaşdırılması olan sahə

Telefon nömrəsinin daxil edilməsi üçün çox vaxt real vaxtda formatlaşdırma tələb olunur. onChangeText-i müntəzəm ifadələrlə birləşdirərək daxiletmə maskası reallaşdırmaq olar.

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}
        />
    );
};

formatPhone funksiyası bütün rəqəm olmayan simvolları silir və nömrəni standart beynəlxalq formatda formatlaşdırır. keyboardType: 'phone-pad' telefon klaviaturasını göstərir. Belə yanaşma telefon nömrələrinin daxil edilməsi üçün UX-ni yaxşılaşdırır və formatlaşdırma xətalarının qarşısını alır.

Tez-tez verilən suallar

TextInput-də value və defaultValue arasında nə fərq var?

value idarə olunan rejimdə istifadə olunur — React vəziyyət vasitəsilə göstərilən mətni idarə edir. defaultValue idarə olunmayan rejimdə istifadə olunur — ilkin dəyəri təyin edir, sonrakı dəyişikliklər komponent daxilində saxlanılır.

Şifrə üçün daxil edilən mətni necə gizlətmək olar?

secureTextEntry xassəsini true olaraq təyin edin. TextInput daxil edilən simvolları gizlədəcək, onları nöqtələr və ya ulduzlarla əvəz edəcək. Əlavə təhlükəsizlik üçün maxLength və autoCapitalize: 'none' ilə birləşdirmək olar.

Niyə onChangeText hər düymə basmada çağırılır?

onChangeText mətnin hər dəyişməsində, o cümlədən bir simvolun daxil edilməsi və silinməsində çağırılır. Bu idarə olunan komponentin normal davranışıdır. Optimizasiya üçün debounce istifadə edə və ya onEndEditing zamanı vəziyyəti yeniləyə bilərsiniz.

İçərisində ikon olan TextInput-u necə etmək olar?

TextInput birbaşa iç-içə elementləri dəstəkləmir. Həll yolu — Flexbox ilə View konteyneri yaratmaq, onun içərisinə ikonu və TextInput-u yerləşdirmək. Konteynerin stili daxiletmə sahəsinin haşiyəsini imitasiya edir, TextInput isə qalan boşluğa uzanır.

Android-də TextInput-un alt xəttini necə silmək olar?

Android-də TextInput standart olaraq aşağı haşiyəyə malikdir (Material Design). Onu underlineColorAndroid: 'transparent' vasitəsilə söndürün. Bu xassə yalnız Android-də işləyir və mətn altında vizual xətti silir.

Nəticə

  • TextInput — React Native-də mətn daxil etmək üçün əsas komponent, geniş imkanlarla HTML input analoqu
  • İdarə olunan (value + onChangeText) və idarə olunmayan iş rejimlərini dəstəkləyir
  • Klaviatura tiplərini (default, numeric, email, phone, url) və şifrələr üçün secureTextEntry təmin edir
  • multiline ilə numberOfLines və textAlignVertical vasitəsilə çoxsətirli rejim
  • Əsas hadisələr: onFocus, onBlur, onChangeText, onSubmitEditing, onEndEditing
  • Platforma xassələrinə textContentType (iOS), underlineColorAndroid (Android) daxildir
  • Daxiletmə maskaları üçün müntəzəm ifadələrlə formatlaşdırma ilə onChangeText istifadə edin

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun