繁体   English   中英

在React Native中使用可重用组件后,数据未使用onDataChange更改

[英]Data is not changing using onDataChange after using reusable component in react native

我创建了一个可重用的组件Text输入,我想做一个简单的验证,但由于总显示为空,所以我无法获得输入值。

这是我获取用户名和密码的地方

                <LoginTextBox placeholderName='Email'
                  value={this.state.username}
                  onChangeText={(username) => this.setState({ username })}
                ></LoginTextBox>
                <LoginTextBox placeholderName='Password'
                 value={this.state.password}
                 onChangeText={(password) => this.setState({ password })}
                ></LoginTextBox>
                <TouchableOpacity 
                onPress={this.onLogin}>

这是我创建LoginLogBox的地方

    render() {
  return (
       <TextInput
        placeholder={this.props.placeholderName}
        style={styles.input}>{this.props.value}</TextInput>
  );
}

以下是我的验证

  onLogin=()=> {
const { username, password } = this.state;
if (username.match("bhaskarj61@gmail.com")) {
this.props.navigation.navigate('NewsFeed');
}
else {
  Alert.alert('enter valid email')
}

}

onChangeText -attribute永远不会附加到您的TextInput

您可以执行类似的操作。

LoginTextBox-组件渲染方法

render(){ 
  return(
     <TextInput
      {...this.props}
      placeholder={this.props.placeholderName}
      style={styles.input}>{this.props.value}</TextInput>
   )
}

这里的TextInput组件上的{...this.props}将您的onChangeText侦听器传递给实际的React Native组件。

在这种情况下,这会将valueplaceholderNameonChangeText属性传递给实际组件。 您也可以通过这种方式将placeholderName为只使用placeholder

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM