2017-04-05 10 views
5

संपादित करें: आगे निरीक्षण पर ऐसा लगता है कि यह केवल एंड्रॉइड 6.0.1 में होता है। 6.0 के साथ कई उपकरणों पर प्रयास करने के बाद, यह कोई मुद्दा नहीं था।प्रतिक्रिया मूल पाठ इनपुट साफ़ टेक्स्ट साफ़ नहीं करता

मेरे पास एक बहुत ही सरल प्रतिक्रिया मूल कोड स्निपेट है जहां मैं टेक्स्ट इनपुट में टेक्स्ट साफ़ करना चाहता हूं। यह इस तरह से एक छोटा सा दिखता है: यह ध्यान में पाठ इनपुट छोड़ने के लिए, और पाठ स्पष्ट के लिए

state = { 
    v: "" 
}; 

_changeText = v => { 
    this.setState({ v }); 
}; 

clear =() => { 
    this.textInputRef.clear(); 
} 

render() { 
    return (
    <View style={styles.container}> 
     <TouchableOpacity onPress={this.clear}> 
     <Text> Clear </Text> 
     </TouchableOpacity> 
     <TextInput 
     ref={ref => this.textInputRef = ref} 
     value={this.state.v} 
     onChangeText={this._changeText} 
     /> 

    </View> 
); 
} 

अब व्यवहार मैं उम्मीद होती है। यह वही होता है - हालांकि, जिस क्षण मैं कीबोर्ड पर कुछ लिखना शुरू करता हूं, जिस पाठ को मैंने पहले साफ़ कर दिया है वह टेक्स्ट इनपुट में फिर से दिखाई देता है। स्पष्ट रूप से पाठ की इस तरह की दृढ़ता वास्तव में वांछित नहीं है।

क्या आप में से किसी ने कभी भी इस समस्या का सामना किया है? क्या यह आरएन बग है या कीबोर्ड को धुंधला करने की आवश्यकता के बिना इस व्यवहार से बचने का कोई तरीका है?

मेरा मतलब यह स्पष्ट करने के लिए यहां एक छोटा सा स्निपेट है: https://snack.expo.io/H1S9b5Mpe

यदि आप टाइपिंग शुरू करते हैं, तो स्पष्ट दबाएं, फिर टाइपिंग करें, पहले दिखाया गया टेक्स्ट आपके नए टाइप किए गए टेक्स्ट से पहले दिखाई देगा।

+0

क्या आपने राज्य को साफ़ करने का प्रयास किया था? –

+1

आप यहां इस समस्या का समाधान ढूंढ सकते हैं: http://stackoverflow.com/questions/37798584/react-native-when-submitting-a-text-input-in-android-the-word-suggestions-are –

+0

कामकाज काम करेगा। यह स्पष्ट रूप से आदर्श नहीं है लेकिन हम इसे केवल समस्या के साथ डिवाइस के लिए आवेदन कर रहे हैं। –

उत्तर

0

यह संभव है कि यह एक विशिष्ट आरएन संस्करण से संबंधित है, या जैसा कि आपने पाया - एक विशिष्ट ओएस संस्करण के लिए। स्निपेट जो आपने वास्तव में ठीक काम किया है, इस मुद्दे को 6.0.0 पर पुन: पेश नहीं कर सकता है। this.setState({v: ""});:

शायद बजाय TextInput की clear विधि का उपयोग कर के तुम इतनी तरह पाठ स्पष्ट करने के लिए एक अलग तरह से कोशिश कर सकते हैं। यह सुनिश्चित करेगा कि राज्य सिंक हो रहा है और पिछले मूल्य को नहीं रखेगा।

+0

दुर्भाग्यवश वही बात सेटस्टेट के साथ होती है। यह एक बहुत ही अजीब मुद्दा प्रतीत होता है कि हम इसे केवल 6.0.1 चलाने वाले कुछ उपकरणों पर पुन: उत्पन्न कर सकते हैं। हम इसे 7.0 चलाने वाले डिवाइस पर भी पुन: पेश कर सकते हैं। –

0

मैंने अभी इस के साथ संघर्ष करना समाप्त कर दिया है! यह एक गंभीर दर्द है!

क्या मैं इस (अब के लिए) को हल करने के गलत पर TextInput का स्वत: सुधार प्रोप स्थापित किया गया था किया था, ऐसा लगता है इस

<TextInput 
    autoCorrect={false} 
    ref={component => this.messageInput = component} 
    value={this.state.message} 
    onChangeText={(text) => this.setState({ message: text })} 
    placeholder="Type your message here..." /> 

मैं सब कुछ करने की कोशिश की "एक स्थिति को बनाए रखने" से कीबोर्ड से बचाता है की तरह और ऐसा लगता है कि यह काम करता है। एक बेहतर समाधान के लिए तत्पर हैं!

बीटीडब्ल्यू: आपको this.setState({ message: "" }) भी करना चाहिए ताकि इनपुट पर मान खाली स्ट्रिंग पर रीसेट हो।

संबंधित मुद्दे