开发者问题收集

React Native-尝试传递参数时未定义不是对象

2017-10-25
559

我正在尝试为我的应用程序制作一个用户注册屏幕。

我的屏幕由 2 个文本输入和一个按钮组成,按下时,按钮会触发一个函数,我将 2 个输入的内容传递给该函数,并获取一个 PHP 脚本以在我的数据库中注册这些 ID:

class LoginScreen extends React.Component {
  constructor (props) {
    super(props)
    this.state = {
      UserName: '',
      UserEmail: ''
    }
  }

  UserRegistrationFunction () {
    const { UserName } = this.state
    const { UserEmail } = this.state

    fetch('[the address with my .php]', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        name: UserName,
        email: UserEmail
      })

    }).then((response) => response.json())
      .then((responseJson) => {
        Alert.alert(responseJson)
      }).catch((error) => {
        console.error(error)
      })
  }

  render () {
    return (
      <View style={styles.MainContainer}>
        <Text style={{ fontSize: 20, color: '#000', textAlign: 'center', marginBottom: 15 }}>User Registration Form</Text>
        <TextInput
          placeholder='Entrez votre nom'
          onChangeText={UserName => this.setState({UserName})}
          underlineColorAndroid='transparent'
        />
        <TextInput
          placeholder='Entrez votre E-mail'
          onChangeText={UserEmail => this.setState({UserEmail})}
          underlineColorAndroid='transparent'
        />
        <Button title="M'enregistrer" onPress={this.UserRegistrationFunction} color='#2196F3' />
      </View>
    )
  }
}

按下按钮时出现错误“undefined 不是对象(正在评估 this.state.UserName)”,但看来我做的一切都是正确的。

1个回答

此行从状态中删除用户名:

onChangeText={UserEmail => this.setState({UserEmail})}

将 setState 更改为

this.setState({...this.state, UserEmail})

它将为您工作或者您可以使用箭头函数来设置状态

HADEEL
2017-10-25