TextInput — यह क्या है, टेक्स्ट इनपुट और React Native

लेखक: IT Sectr प्रकाशित: 2026-07-05 पढ़ने का समय: 9 मिनट

React Native में TextInput कंपोनेंट उपयोगकर्ता द्वारा टेक्स्ट इनपुट के लिए मुख्य तत्व है, जो HTML इनपुट तत्व के समान है। TextInput नियंत्रित और अनियंत्रित स्थिति, विभिन्न कीबोर्ड प्रकार, इनपुट मास्क और फ़ोकस इवेंट हैंडलिंग का समर्थन करता है। React Native Docs, 2024 के अनुसार, TextInput फ़ॉर्म, खोज, चैट और उपयोगकर्ता इनपुट वाले किसी भी परिदृश्य के लिए एक महत्वपूर्ण कंपोनेंट है। कंपोनेंट स्वचालित रूप से प्लेटफ़ॉर्म के अनुकूल हो जाता है, iOS पर मूल UITextField और Android पर EditText का उपयोग करता है।

मुख्य बिंदु

  • TextInput — टेक्स्ट इनपुट के लिए React Native कंपोनेंट, HTML input के समान
  • value + onChangeText के माध्यम से नियंत्रित स्थिति का समर्थन करता है
  • कीबोर्ड प्रकार प्रदान करता है: default, numeric, email, phone, url
  • iOS पर UITextField और Android पर EditText के रूप में रेंडर होता है
  • मल्टीलाइन इनपुट, placeholder और पासवर्ड के लिए secureTextEntry का समर्थन करता है

React Native में TextInput क्या है

TextInput एक React Native कंपोनेंट है जो उपयोगकर्ताओं को डिवाइस कीबोर्ड का उपयोग करके टेक्स्ट दर्ज करने की अनुमति देता है। यह पंजीकरण फ़ॉर्म, खोज बार, संदेश इनपुट फ़ील्ड और उपयोगकर्ता इनपुट की आवश्यकता वाले किसी भी अन्य परिदृश्य के लिए मुख्य निर्माण खंड है। वेब डेवलपमेंट के विपरीत, जहाँ अलग-अलग इनपुट प्रकार (text, email, password, search) मौजूद हैं, React Native में ये सभी वेरिएंट विभिन्न props के साथ एक ही TextInput कंपोनेंट के माध्यम से कार्यान्वित किए जाते हैं।

TextInput संचालन के दो मोड का समर्थन करता है: नियंत्रित (React स्थिति के माध्यम से प्रबंधित) और अनियंत्रित (ref का उपयोग करके)। नियंत्रित मोड में, फ़ील्ड मान कंपोनेंट स्थिति में संग्रहीत होता है और onChangeText कॉलबैक के माध्यम से अपडेट होता है। यह दृष्टिकोण अधिकांश अनुप्रयोगों के लिए अनुशंसित है क्योंकि यह सत्य का एकल स्रोत प्रदान करता है और सत्यापन को सरल बनाता है।

React Native Handling Text Input, 2024 के अनुसार, TextInput स्वचालित रूप से प्लेटफ़ॉर्म के अनुकूल हो जाता है: iOS पर यह मूल UITextField का उपयोग करता है, Android पर — EditText। यह अतिरिक्त कॉन्फ़िगरेशन के बिना ऑटोकंप्लीट, ऑटोकरेक्शन और सिस्टम मेनू (कट/कॉपी/पेस्ट) के उचित संचालन को सुनिश्चित करता है।

TextInput गुण और API

TextInput इनपुट, उपस्थिति और व्यवहार को नियंत्रित करने के लिए props का एक व्यापक सेट प्रदान करता है। सभी props कई श्रेणियों में विभाजित हैं: मान प्रबंधन, कीबोर्ड प्रकार, स्टाइलिंग, इवेंट और प्लेटफ़ॉर्म-विशिष्ट सुविधाएँ।

मान प्रबंधन के गुण

value — फ़ील्ड का वर्तमान मान (नियंत्रित मोड के लिए)। onChangeText — प्रत्येक टेक्स्ट परिवर्तन पर कॉल किया जाने वाला कॉलबैक। placeholder — फ़ील्ड खाली होने पर दिखाया जाने वाला संकेत टेक्स्ट। defaultValue — अनियंत्रित मोड के लिए प्रारंभिक मान। maxLength उपयोगकर्ता द्वारा दर्ज किए जा सकने वाले अक्षरों की अधिकतम संख्या को सीमित करता है।

TextInput इवेंट

कंपोनेंट onFocus (फ़ील्ड को फ़ोकस मिला), onBlur (फ़ील्ड ने फ़ोकस खो दिया), onSubmitEditing (उपयोगकर्ता ने Enter/Return दबाया), onKeyPress (कुंजी दबाव) का समर्थन करता है। onEndEditing इवेंट फ़ोकस खोने पर संपादन समाप्त होने के बाद कॉल किया जाता है। ये कॉलबैक जटिल सत्यापन और फ़ॉर्म सबमिशन लॉजिक को लागू करने की अनुमति देते हैं।

प्लेटफ़ॉर्म-विशिष्ट गुण

iOS पर: clearButtonMode (साफ़ बटन), keyboardAppearance (हल्का/गहरा कीबोर्ड), returnKeyType (Return बटन प्रकार), enablesReturnKeyAutomatically। Android पर: textContentType (ऑटोफ़िल), underlineColorAndroid, inlineImageLeft। secureTextEntry पासवर्ड इनपुट के लिए दोनों प्लेटफ़ॉर्म पर काम करता है।

नियंत्रित और अनियंत्रित इनपुट

React Native में, TextInput दो मोड में काम कर सकता है। नियंत्रित मोड में, React फ़ील्ड मान का प्रबंधन करता है: आप स्थिति से मान पास करते हैं और इसे onChangeText के माध्यम से अपडेट करते हैं। अनियंत्रित मोड में, React केवल फ़ील्ड को आरंभ करता है, और DOM-जैसा मान मूल कंपोनेंट के अंदर संग्रहीत होता है।

नियंत्रित TextInput

नियंत्रित मोड उन सभी फ़ॉर्म के लिए अनुशंसित है जिन्हें इनपुट डेटा के सत्यापन, फ़िल्टरिंग या फ़ॉर्मेटिंग की आवश्यकता है। फ़ील्ड की स्थिति React कंपोनेंट स्थिति के साथ सिंक्रोनाइज़ होती है, जो मान पर पूर्ण नियंत्रण देती है।

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

इस उदाहरण में, दोनों फ़ील्ड नियंत्रित मोड का उपयोग करते हैं। ईमेल फ़ील्ड में email-address कीबोर्ड प्रकार है और ऑटोकैपिटलाइज़ेशन अक्षम है। पासवर्ड फ़ील्ड इनपुट अक्षरों को छिपाने के लिए secureTextEntry का उपयोग करता है और maxLength के माध्यम से 32 अक्षरों तक सीमित है।

अनियंत्रित TextInput

अनियंत्रित मोड सरल फ़ील्ड के लिए उपयुक्त है जिन्हें सत्यापन या इनपुट पर तत्काल प्रतिक्रिया की आवश्यकता नहीं है। फ़ॉर्म सबमिशन के समय फ़ील्ड मान ref के माध्यम से प्राप्त किया जाता है।

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

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

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

अनियंत्रित मोड में, कंपोनेंट तेज़ी से रेंडर होता है क्योंकि इसे प्रत्येक टेक्स्ट परिवर्तन पर स्थिति सिंक्रोनाइज़ेशन की आवश्यकता नहीं होती है। हालाँकि, आप रीयल टाइम में इनपुट को फ़िल्टर, फ़ॉर्मेट या सत्यापित करने की क्षमता खो देते हैं।

कीबोर्ड प्रकार और प्लेटफ़ॉर्म सुविधाएँ

TextInput विभिन्न कीबोर्ड प्रकारों का समर्थन करता है जो अपेक्षित इनपुट प्रारूप के अनुसार लेआउट को अनुकूलित करते हैं। सही कीबोर्ड प्रकार चुनना उपयोगकर्ता अनुभव में सुधार करता है और मोबाइल उपकरणों पर इनपुट त्रुटियों को कम करता है।

keyboardType मानविवरणकब उपयोग करें
defaultमानक वर्णमाला कीबोर्डपहला नाम, अंतिम नाम, पता
numericसंख्यात्मक कीबोर्ड (केवल अंक)आयु, मात्रा, PIN कोड
email-address@ और .com वाला कीबोर्डपंजीकरण फ़ॉर्म में ईमेल फ़ील्ड
phone-pad+ और # वाला फ़ोन कीबोर्डफ़ोन नंबर
url/ और .com वाला कीबोर्डवेब पता दर्ज करना
decimal-padदशमलव बिंदु वाला संख्यात्मक कीबोर्डमूल्य, वज़न, आकार

iOS पर अतिरिक्त प्रकार उपलब्ध हैं: numbers-and-punctuation, twitter, web-search (वॉइस सर्च के साथ)। Android पर visible-password भी उपलब्ध है (पासवर्ड दिखाता है)। सही keyboardType चुनना मोबाइल एप्लिकेशन UX का एक महत्वपूर्ण पहलू है।

प्लेटफ़ॉर्म सुविधाओं में autoCapitalize (पहले शब्द का स्वचालित कैपिटलाइज़ेशन), autoCorrect (स्वचालित सुधार), spellCheck (वर्तनी जाँच), textContentType (iOS पर ऑटोफ़िल) भी शामिल हैं। ये props प्रत्येक प्लेटफ़ॉर्म पर अलग-अलग काम करते हैं और परीक्षण की आवश्यकता होती है।

TextInput के साथ व्यावहारिक उदाहरण

आइए दो वास्तविक परिदृश्यों पर विचार करें: संदेश इनपुट के लिए मल्टीलाइन फ़ील्ड और मास्क किया हुआ फ़ोन नंबर इनपुट फ़ील्ड। दोनों वांछित व्यवहार प्राप्त करने के लिए विभिन्न props के साथ TextInput का उपयोग करते हैं।

उदाहरण 1: संदेश के लिए मल्टीलाइन फ़ील्ड

लंबा टेक्स्ट (टिप्पणियाँ, विवरण) दर्ज करने के लिए, TextInput multiline prop के माध्यम से मल्टीलाइन मोड में स्विच होता है। इस मोड में, फ़ील्ड लंबवत रूप से बढ़ती है और लाइन ब्रेक का समर्थन करती है।

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 prop मल्टीलाइन मोड को सक्षम करता है, numberOfLines पंक्तियों में प्रारंभिक ऊँचाई निर्धारित करता है। textAlignVertical: 'top' टेक्स्ट को शीर्ष पर संरेखित करता है (डिफ़ॉल्ट रूप से, Android मल्टीलाइन TextInput टेक्स्ट को लंबवत रूप से केंद्रित करता है)।

उदाहरण 2: फ़ोन नंबर फ़ॉर्मेटिंग फ़ील्ड

फ़ोन नंबर दर्ज करने के लिए, अक्सर रीयल-टाइम फ़ॉर्मेटिंग की आवश्यकता होती है। onChangeText को नियमित अभिव्यक्तियों के साथ जोड़कर, आप एक इनपुट मास्क लागू कर सकते हैं।

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 फ़ंक्शन सभी गैर-अंकीय वर्णों को हटाता है और संख्या को मानक अंतर्राष्ट्रीय प्रारूप में फ़ॉर्मेट करता है। keyboardType: 'phone-pad' फ़ोन कीबोर्ड प्रदर्शित करता है। यह दृष्टिकोण फ़ोन नंबर इनपुट के लिए UX में सुधार करता है और फ़ॉर्मेटिंग त्रुटियों को रोकता है।

अक्सर पूछे जाने वाले प्रश्न

TextInput में value और defaultValue में क्या अंतर है?

value नियंत्रित मोड में उपयोग किया जाता है — React स्थिति के माध्यम से प्रदर्शित टेक्स्ट का प्रबंधन करता है। defaultValue अनियंत्रित मोड में उपयोग किया जाता है — यह प्रारंभिक मान सेट करता है, और आगे के परिवर्तन कंपोनेंट के अंदर संग्रहीत होते हैं।

पासवर्ड के लिए इनपुट टेक्स्ट कैसे छिपाएं?

secureTextEntry prop को true पर सेट करें। TextInput इनपुट वर्णों को छिपा देगा, उन्हें बिंदुओं या तारांकन से बदल देगा। अतिरिक्त सुरक्षा के लिए, आप इसे maxLength और autoCapitalize: 'none' के साथ जोड़ सकते हैं।

onChangeText हर कीस्ट्रोक पर क्यों कॉल होता है?

onChangeText प्रत्येक टेक्स्ट परिवर्तन पर कॉल किया जाता है, जिसमें एकल वर्ण का सम्मिलन और विलोपन शामिल है। यह नियंत्रित कंपोनेंट का सामान्य व्यवहार है। अनुकूलन के लिए, आप debounce का उपयोग कर सकते हैं या onEndEditing पर स्थिति अपडेट कर सकते हैं।

अंदर आइकन के साथ TextInput कैसे बनाएं?

TextInput सीधे नेस्टेड तत्वों का समर्थन नहीं करता है। समाधान Flexbox के साथ एक View कंटेनर बनाना है, जिसके अंदर आप एक आइकन और TextInput रखते हैं। कंटेनर की शैली इनपुट फ़ील्ड बॉर्डर की नकल करती है, और TextInput शेष स्थान भरने के लिए फैलता है।

Android पर TextInput की अंडरलाइन कैसे हटाएं?

Android पर, TextInput में डिफ़ॉल्ट रूप से एक निचला बॉर्डर (Material Design) होता है। इसे underlineColorAndroid: 'transparent' के साथ अक्षम करें। यह prop केवल Android पर काम करता है और टेक्स्ट के नीचे दृश्य रेखा को हटाता है।

सारांश

  • TextInput — टेक्स्ट इनपुट के लिए मुख्य React Native कंपोनेंट, विस्तारित क्षमताओं के साथ HTML input के समान
  • नियंत्रित (value + onChangeText) और अनियंत्रित मोड का समर्थन करता है
  • कीबोर्ड प्रकार (default, numeric, email, phone, url) और पासवर्ड के लिए secureTextEntry प्रदान करता है
  • multiline के साथ numberOfLines और textAlignVertical के माध्यम से मल्टीलाइन मोड
  • मुख्य इवेंट: onFocus, onBlur, onChangeText, onSubmitEditing, onEndEditing
  • प्लेटफ़ॉर्म-विशिष्ट props में textContentType (iOS), underlineColorAndroid (Android) शामिल हैं
  • इनपुट मास्क के लिए, नियमित अभिव्यक्तियों के साथ फ़ॉर्मेटिंग के लिए onChangeText का उपयोग करें

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें