使用Firebase验证输入字段进行本地反应

时间:2018-09-19 11:26:40

标签: firebase react-native

我想验证react native中的登录表单。但是我在onChangetext中使用了另一个本机的 Firebase 日志记录功能。 这是我在登录按钮中按下的onPress函数。

  async onLoginPress() {
    this.setState({ errorMessage: null, loading: true });
    const { email, password } = this.state;
    console.log(email);
    console.log(password);
    firebase
      .auth()
      .signInWithEmailAndPassword(this.state.email, this.state.password)
      .then(() => {
        this.setState({ loading: false });
        // this.props.navigation.navigate("Friendlist");
      })
      .catch(() => {
        //var errorCode = error.code;
        //var errorMessage = error.message;
        this.setState({
          error: 'AUTHENTICATION FAILED',
          loading: false
        });
      });
    await AsyncStorage.setItem("email", email);
    await AsyncStorage.setItem("password", password);

    firebase.auth().onAuthStateChanged(user => {
      if (user) {
        this.setState({
          loading: false
        });
      }
    });    
  } 

这是我在onChangetext中的TextInput定义

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

我想用这些功能添加验证功能。我怎么做到的?

1 个答案:

答案 0 :(得分:0)

您可以在

的onChangeText回调中添加多个功能。
onChangeText={async email => {
  await method1()
  await method2()
  ...
}}

但是我建议您使用回调,因为您使用的是setState。这样可以确保setState在调用其回调之前被更新

onChangeText={email => this.setState({ email }, () => this.validate(email))}