我正在尝试为我的应用程序制作用户注册屏幕。
我的屏幕由 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不是对象(评估此.state.UserName)",但似乎我以正确的方式做了所有事情。
此行从状态中删除用户名:
onChangeText={UserEmail => this.setState({UserEmail})}
将设置状态更改为
this.setState({...this.state, UserEmail})
它会为你工作 或者您可以使用箭头函数来设置状态