null不是对象:(评估this.state.email)

时间:2019-01-20 07:56:51

标签: react-native ecmascript-6

我正在创建登录表单。但是对此有一些疑问。这是我到目前为止所做的。

loginUser = async(email, password) => {
    if(email != '' && password != ''){
      try {
        let user = await auth.signInWithEmailAndPassword(email,password);
        console.log(user);
      } catch (error) {
        console.log(error);
      }
    } else {
      alert("some error")
    }
  }

和渲染内:

render(){
    return(
      <View>
        <Text>Email</Text>
        <TextInput
          onChangeText={(text) => this.setState({email: text})}
          value={this.state.email}
        />
        <Text>Password</Text>
        <TextInput
          onChangeText={(text) => this.setState({password: text})}
          value={this.state.password}
          secureTextEntry={true}
        />
        <TouchableHighlight style={{backgroundColor: "green"}}
          onPress={() => this.loginUser(this.state.email, this.state.password)}>
          <Text>Login!</Text>
        </TouchableHighlight>

        <TouchableHighlight style={{backgroundColor: "green"}}
          onPress={()=> this.loginWithFacebook()}>
          <Text>Login with Facebook!</Text>
        </TouchableHighlight>
      </View>
    );
  }
}

我在这里做错了什么?因为loginUser函数无法正常工作,谢谢您!

2 个答案:

答案 0 :(得分:1)

我在代码中看不到构造函数。尝试添加它。

constructor(props){
    super(props);
    this.state = {
    }
  }

答案 1 :(得分:1)

添加以下代码,让您的班级脱颖而出:

state = {
  email: '',
  password: '',
}

代码失败,因为您试图获取不存在的obj的密钥。您需要先创建它。