如何在本机中访问文本输入中的值?

时间:2018-05-10 18:19:14

标签: reactjs native

我有以下代码,我想得到一个已经输入到文本框中的值的警报,我该如何访问该值? (在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 :(得分:0)

你的状态对象有点混乱。对于文本输入组件,您将值绑定到 this.state.myNumber ,但如果正确验证,则永远不会尝试调整此值。但是,您尝试为警报引用 this.state.text 。你需要做几件事。

首先调整验证以在有效时更新您关注的状态对象。

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

这将正确更新您的状态,然后当您想要提醒时,您可以访问该属性。

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