Как мне получить значение в TextInput, когда onBlur вызывается?



В React native я хочу передать значение TextInput в обработчике событий onBlur.



onBlur={(e) => this.validateText(e.target.value)}


E. цель.значение работает для простой реакции. Но в react-native, то есть target.значение не определено. Какова структура args событий, доступных в react-native?

574   3  

3 ответов:

В React Native вы можете получить значение TextInput из e.nativeEvent.text.

К сожалению, это не работает для multiline={true}. Один из способов обойти это-сохранить ссылку на ваш TextInput и получить доступ к текстовому значению через свойство _lastNativeText компонента. Например (предположим, что вы присвоили своему компоненту TextInput ссылку "textInput"):

onBlur={() => console.log(this.refs.textInput._lastNativeText)}

Вы должны использовать метод 'onEndEditing' вместо 'onBlur'

OnEndEditing?: функция обратного вызова, которая вызывается при завершении ввода текста.

OnBlur-это компонентная функция, где onEndEditing специфичен для TextInput

OnEndEditing

Этот подход работает как для многострочных, так и для однострочных линий.

<TextInput 
    onEndEditing={(e: any) => 
    {
        this.setState({textValue: e.nativeEvent.text})
    }
}/>

Простое решение: Это далеко от электронной почты вашего государства будет всегда иметь последнее значение, измененное пользователем.

           validate = () => {
            const { email } = this.state
            console.log('Validating Email Here!', email)
           }

          <TextInput
           style={styles.input}
           placeholder='E-mail'
           onChangeText={email => this.setState({email})}
           onBlur={e => this.validate()}
         />

Comments

    Ничего не найдено.