TextInput — bu nima, matn kiritish va React Native

Muallif: IT Sectr Nashr etilgan: 2026-07-05 O'qish vaqti: 9 daq

React Native-dagi TextInput komponenti — foydalanuvchi tomonidan matn kiritish uchun asosiy element, HTML input elementining analogidir. TextInput boshqariladigan va boshqarilmaydigan holatni, turli xil klaviatura turlarini, kiritish maskalarini va fokus hodisalarini qayta ishlashni qo'llab-quvvatlaydi. React Native Docs, 2024 ma'lumotlariga ko'ra, TextInput formalar, qidiruv, chatlar va foydalanuvchi kiritishi bilan bog'liq har qanday stsenariylar uchun asosiy komponent hisoblanadi. Komponent avtomatik ravishda platformaga moslashadi — iOS-da mahalliy UITextField, Android-da esa EditText dan foydalanadi.

Asosiy ma'lumotlar

  • TextInput — React Native-da matn kiritish komponenti, HTML input analogi
  • Boshqariladigan holatni value + onChangeText orqali qo'llab-quvvatlaydi
  • Klaviatura turlarini taqdim etadi: default, numeric, email, phone, url
  • iOS-da UITextField, Android-da EditText sifatida renderlanadi
  • Ko'p qatorli kiritish, placeholder va parollar uchun secureTextEntry-ni qo'llab-quvvatlaydi

React Native-da TextInput nima

TextInput — foydalanuvchiga qurilma klaviaturasidan matn kiritish imkonini beruvchi React Native komponenti. Bu ro'yxatdan o'tish formalari, qidiruv satrlari, xabar kiritish maydonlari va foydalanuvchi kiritishi talab qilinadigan boshqa stsenariylar uchun asosiy qurilish blokidir. Veb-ishlanmadan farqli o'laroq, bu erda alohida input turlari (text, email, password, search) mavjud emas — React Native-da barcha bu variantlar turli xususiyatlarga ega yagona TextInput komponenti orqali amalga oshiriladi.

TextInput ikki ish rejimini qo'llab-quvvatlaydi: boshqariladigan (React holati orqali boshqariladi) va boshqarilmaydigan (ref bilan). Boshqariladigan rejimda maydonning qiymati komponent holatida saqlanadi va onChangeText callback-i orqali yangilanadi. Bu yondashuv ko'pchilik ilovalar uchun tavsiya etiladi, chunki u yagona haqiqat manbasini ta'minlaydi va validatsiyani soddalashtiradi.

React Native Handling Text Input, 2024 ma'lumotlariga ko'ra, TextInput avtomatik ravishda platformaga moslashadi: iOS-da mahalliy UITextField, Android-da esa EditText ishlatiladi. Bu qo'shimcha sozlamalarsiz avtomatik almashtirish, avtokorreksiya va tizim menyularining (kesh/nusxala/yopishtir) to'g'ri ishlashini ta'minlaydi.

TextInput komponentining xususiyatlari va API

TextInput kiritish, tashqi ko'rinish va xatti-harakatni boshqarish uchun keng xususiyatlar to'plamini taqdim etadi. Barcha xususiyatlar bir necha kategoriyaga bo'linadi: qiymatni boshqarish, klaviatura turi, stillashtirish, hodisalar va platforma xususiyatlari.

Qiymatni boshqarish xususiyatlari

value — maydonning joriy qiymati (boshqariladigan rejim uchun). onChangeText — matn har safar o'zgarganda chaqiriladigan callback. placeholder — maydon bo'sh bo'lganda ko'rsatiladigan maslahat matni. defaultValue — boshqarilmaydigan rejim uchun boshlang'ich qiymat. maxLength foydalanuvchi kiritishi mumkin bo'lgan maksimal belgilar sonini cheklaydi.

TextInput hodisalari

Komponent onFocus (maydon fokus oldi), onBlur (maydon fokusni yo'qotdi), onSubmitEditing (foydalanuvchi Enter/Return tugmasini bosdi), onKeyPress (tugma bosish) hodisalarini qo'llab-quvvatlaydi. onEndEditing hodisasi tahrirlash tugagandan so'ng fokus yo'qolganda chaqiriladi. Bu callback-lar murakkab validatsiya va formalarni jo'natish mantiqini amalga oshirishga imkon beradi.

Platforma xususiyatlari

iOS-da mavjud: clearButtonMode (tozalash tugmasi), keyboardAppearance (ochiq/qorong'i klaviatura), returnKeyType (Return tugmasi turi), enablesReturnKeyAutomatically. Android-da mavjud: textContentType (avtomatik to'ldirish), underlineColorAndroid, inlineImageLeft. secureTextEntry ikkala platformada parollarni kiritish uchun ishlaydi.

Boshqariladigan va boshqarilmaydigan kiritish

React Native-da TextInput ikki rejimda ishlashi mumkin. Boshqariladigan rejimda React maydon qiymatini boshqaradi: siz holatdan value uzatasiz va onChangeText orqali yangilaysiz. Boshqarilmaydigan rejimda React faqat maydonni ishga tushiradi, DOM-ga o'xshash qiymat esa mahalliy komponent ichida saqlanadi.

Boshqariladigan TextInput

Boshqariladigan rejim validatsiya, filtrlash yoki kiritilgan ma'lumotlarni formatlash talab qilinadigan barcha formalar uchun tavsiya etiladi. Maydon holati React komponenti holati bilan sinxronlashtiriladi, bu qiymat ustidan to'liq nazorat beradi.

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 misolda ikkala maydon boshqariladigan rejimdan foydalanadi. Email email-address klaviatura turiga ega va avtomatik katta harf o'chirilgan. Parol secureTextEntry dan foydalanib kiritilgan belgilarni yashiradi va maxLength orqali 32 belgi bilan cheklangan.

Boshqarilmaydigan TextInput

Boshqarilmaydigan rejim validatsiya yoki kiritishga darhol reaksiya talab qilinmaydigan oddiy maydonlar uchun mos keladi. Maydon qiymati forma jo'natilayotganda ref orqali olinadi.

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

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

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

Boshqarilmaydigan rejimda komponent tezroq renderlanadi, chunki har bir matn o'zgarishida holatni sinxronlashtirish talab qilinmaydi. Biroq, siz real vaqtda kiritishni filtrlash, formatlash yoki validatsiya qilish imkoniyatini yo'qotasiz.

Klaviatura turlari va platforma xususiyatlari

TextInput turli xil klaviatura turlarini qo'llab-quvvatlaydi, ular tartibni kutilgan kiritish formatiga moslashtiradi. To'g'ri klaviatura turini tanlash foydalanuvchi tajribasini yaxshilaydi va mobil qurilmalarda kiritish xatolari sonini kamaytiradi.

keyboardType qiymatiTavsifQachon ishlatish kerak
defaultStandart alifbo klaviaturasiIsm, familiya, manzil
numericRaqam klaviaturasi (faqat raqamlar)Yosh, miqdor, PIN kod
email-address@ va .com bo'lgan klaviaturaRo'yxatdan o'tish formasidagi email maydoni
phone-pad+ va # bo'lgan telefon klaviaturasiTelefon raqami
url/ va .com bo'lgan klaviaturaVeb-manzilni kiritish
decimal-padO'nlik nuqtasi bo'lgan raqam klaviaturasiNarx, og'irlik, o'lcham

iOS-da qo'shimcha turlar mavjud: numbers-and-punctuation (raqamlar va tinish belgilari), twitter, web-search (ovozli qidiruv bilan). Android-da visible-password (parolni ko'rsatadi) ham mavjud. To'g'ri keyboardType tanlash mobil ilova UX-ning muhim jihatidir.

Platforma xususiyatlari shuningdek autoCapitalize (birinchi so'zni avtomatik katta harf), autoCorrect (avtokorreksiya), spellCheck (imlo tekshiruvi), textContentType (iOS-da avtomatik to'ldirish) ni o'z ichiga oladi. Bu xususiyatlar har bir platformada turlicha ishlaydi va sinov talab qiladi.

TextInput bilan amaliy misollar

Ikkita real stsenariyni ko'rib chiqamiz: xabar kiritish uchun ko'p qatorli maydon va telefon raqamini maskalangan kiritish maydoni. Ikkalasi ham kerakli xatti-harakatga erishish uchun turli xususiyatlar bilan TextInput dan foydalanadi.

Misol 1: xabar uchun ko'p qatorli maydon

Uzoq matn kiritish uchun (sharhlar, tavsif) TextInput multiline xususiyati orqali ko'p qatorli rejimga o'tadi. Bu rejimda maydon vertikal ravishda o'sadi va qator o'tkazishni qo'llab-quvvatlaydi.

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 xususiyati ko'p qatorli rejimni yoqadi, numberOfLines qatorlardagi boshlang'ich balandlikni belgilaydi. textAlignVertical: 'top' matnni yuqori chetiga tekislaydi (Android-da ko'p qatorli TextInput standart ravishda matnni vertikal markazlashtiradi).

Misol 2: telefon raqamini formatlash maydoni

Telefon raqamini kiritish uchun ko'pincha real vaqtda formatlash talab qilinadi. onChangeText ni muntazam ifodalar bilan birlashtirib, kiritish maskasini amalga oshirish mumkin.

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 funksiyasi barcha raqam bo'lmagan belgilarni olib tashlaydi va raqamni standart xalqaro formatda formatlaydi. keyboardType: 'phone-pad' telefon klaviaturasini ko'rsatadi. Bunday yondashuv telefon raqamlarini kiritishda UX-ni yaxshilaydi va formatlash xatolarining oldini oladi.

Tez-tez beriladigan savollar

TextInput-da value va defaultValue o'rtasidagi farq nima?

value boshqariladigan rejimda ishlatiladi — React holat orqali ko'rsatilgan matnni boshqaradi. defaultValue boshqarilmaydigan rejimda ishlatiladi — boshlang'ich qiymatni belgilaydi, keyingi o'zgarishlar komponent ichida saqlanadi.

Parol uchun kiritilgan matnni qanday yashirish mumkin?

secureTextEntry xususiyatini true qilib belgilang. TextInput kiritilgan belgilarni nuqtalar yoki yulduzchalar bilan almashtirib yashiradi. Qo'shimcha xavfsizlik uchun maxLength va autoCapitalize: 'none' bilan birlashtirish mumkin.

Nega onChangeText har bir tugma bosishda chaqiriladi?

onChangeText matnning har bir o'zgarishida, jumladan bitta belgini kiritish va o'chirishda chaqiriladi. Bu boshqariladigan komponentning normal xatti-harakatidir. Optimizatsiya uchun debounce ishlatish yoki onEndEditing vaqtida holatni yangilash mumkin.

Ichida belgisi bor TextInput-ni qanday yasash mumkin?

TextInput to'g'ridan-to'g'ri ichma-ich elementlarni qo'llab-quvvatlamaydi. Yechim — Flexbox bilan View konteyneri yaratish, uning ichiga belgi va TextInput joylashtirish. Konteyner uslubi kiritish maydoni chegarasini taqlid qiladi, TextInput esa qolgan bo'shliqni egallaydi.

Android-da TextInput chizig'ini qanday olib tashlash mumkin?

Android-da TextInput standart ravishda pastki chegaraga ega (Material Design). Uni underlineColorAndroid: 'transparent' orqali o'chiring. Bu xususiyat faqat Android-da ishlaydi va matn ostidagi vizual chiziqni olib tashlaydi.

Xulosa

  • TextInput — React Native-da matn kiritish uchun asosiy komponent, keng imkoniyatli HTML input analogi
  • Boshqariladigan (value + onChangeText) va boshqarilmaydigan ish rejimlarini qo'llab-quvvatlaydi
  • Klaviatura turlarini (default, numeric, email, phone, url) va parollar uchun secureTextEntry taqdim etadi
  • multiline bilan numberOfLines va textAlignVertical orqali ko'p qatorli rejim
  • Asosiy hodisalar: onFocus, onBlur, onChangeText, onSubmitEditing, onEndEditing
  • Platforma xususiyatlari textContentType (iOS), underlineColorAndroid (Android) ni o'z ichiga oladi
  • Kiritish maskalari uchun muntazam ifodalar bilan formatlash yordamida onChangeText ishlating

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing