Как я могу получить доступ к значению из ввода текста в реагировать родной? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть следующий код, я хотел бы получить предупреждение о значении, которое было введено в текстовое поле, как я могу получить доступ к значению?(в функции alertFunction):

    alertFunction(text){
        Alert.alert(this.state.text);

    }    

validate(text, type) {
    num = /^[0-9]+$/
    if (type == 'telephone') {
        if (num.test(text)) {
            this.setState({
                telephoneValidate: true,
                buttonInvalid: false,
            })
        } else {
            this.setState({
                telephoneValidate: false,
                buttonInvalid: true,
            })
        }
    }
}




<TextInput
                style={[!this.state.telephoneValidate ? { borderWidth: 3, borderColor: 'red' } : null]}
                keyboardType='numeric'
                onChangeText={(text) => this.validate(text, 'telephone')}
                value={this.state.myNumber}
                maxLength={10}  //setting limit of input
            />

            <TouchableOpacity style={[styles.ButtonStyle, { backgroundColor: this.state.buttonInvalid ? '#607D8B' : '#009688' }]}
                activeOpacity={.5}
                disabled={this.state.buttonInvalid}
                onPress={this.alertFunction} 
      >

                <Text style={styles.TextStyle}>Submit</Text>

            </TouchableOpacity>

Спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Вы немного запутались в своем объекте состояния.Для компонента ввода текста вы привязываете значение к this.state.myNumber , но никогда не пытаетесь настроить это значение, если оно правильно проверено.Но затем вы пытаетесь сослаться на this.state.text для предупреждения.Вам нужно сделать пару вещей.

Сначала настройте свой валидатор так, чтобы он обновлял объект состояния, о котором вы заботитесь, когда он действителен.

validate(text, type){ 
   ..is valid
   this.setState({ 
      ..other items,
      myNumber: text
   });

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

alertFunction(text){
    Alert.alert(this.state.myNumber);
    }    
...