我最近正在练习React Native,并开发一个附加到Firebase的注册表单。
但是,每当我尝试单击该按钮时,都会出现错误:
createUserWithEmailAndPassword失败的第一个参数电子邮件必须为有效字符串。
这是我的代码:
import React, {Component} from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
} from 'react-native';
import {Button,Input} from 'react-native-elements';
import firebase from './screens/firebase';
console.log(firebase.name);
console.log(firebase.database());
class App extends React.Component
{
constructor(props)
{
super(props);
this.state = {
name:'',
email : '',
Password : '',
tc:'',
phone:'',
};
}
handleRegisterUser = () => {
const {name,email,Password,tc,phone} =this.setState;
firebase.auth().createUserWithEmailAndPassword(email,Password)
.then((user) => {
const fbRootRefFS = firebase.firestore();
const userID = user.uid;
const userRef = fbRootRefFS.collection('users')
.doc(userID);
userRef.set({
name,
email,
Password,
tc,
phone,
});
})
}
render(){
return(
<View style = {styles.container}>
<Input
placeholder='Enter Name'
onChangeText={(name) => this.setState({name})}/>
<Input
placeholder='Enter Email'
onChangeText={(email) => this.setState({email})}/>
<Input
placeholder='Enter Password'
onChangeText={(Password) => this.setState({Password})}/>
<Input
placeholder='Enter TC'
onChangeText={(tc) => this.setState({tc})}/>
<Input
placeholder='Enter Phone'
onChangeText={(phone) => this.setState({phone})}/>
<View style={{marginTop : 40,flexDirection : 'row'}}>
<Button
title="Sign UP"
onPress = {() => this.handleRegisterUser(this.state.name,this.state.email,this.state.Password,this.state.tc,this.state.phone)}/>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container :
{
flex : 1,
justifyContent : 'center',
alignItems : 'center',
}
});
export default App;
我在哪里出错?我已经处理这个问题很长时间了,谢谢您的帮助。
答案 0 :(得分:0)
在handleRegisterUser()
中,您需要通过以下方式从状态中检索值:
const {name,email,Password,tc,phone} = this.state;
this.setState
是用于更新组件状态的功能。您可以使用this.state
访问状态。
请参阅official doc以供参考。