Реагировать на встроенную навигацию по Firebase, неспособную перемещаться по второму экрану. - PullRequest
0 голосов
/ 12 декабря 2018

Когда я нажимаю кнопку входа в систему в первый раз, я получаю значение «неопределено», после второго щелчка оно показывает точное значение, которое я исключаю.Мое требование заключается в том, что мне нужно проверить действительное имя пользователя и ПАРОЛЬ, если оно верное, то получить информацию о конкретном пользователе, после получения данных мне нужно перейти на другую страницу, ниже приведен код, Пожалуйста, помогите, как позвонить:

import PropTypes from "prop-types";
import React, { Component } from "react";
import {
  View,
  Text,
  Button,
  TouchableOpacity,
  TextInput,
  StyleSheet,
  NavigationActions
} from "react-native";
    import firebase from "firebase";

    export class Login extends Component {
      state = {
        email: "xxxxxx",
        password: "123456",
        items: [],
        userData: [],
        currentUser: null,
        role: ""
      };


      login = (email, pass) => {

        this.validateFirebase(email, pass);
      };
      validateFirebase = (email, pass) => {
        firebase
          .auth()
          .signInWithEmailAndPassword("xxxxxx.com", "123456")
          .then(() => {

            {this.forgotPasswordForm()}
          })
          .catch(function(error) {
            console.error("Error: ", error);
          });
      };

        // Create a function that will update the state in parent
        forgotPasswordForm = () => {
          const { currentUser } = firebase.auth();

            let u_ref = currentUser.uid;
            let userEmail = currentUser.email;
          firebase.database()
          .ref("users_ids/0")
          .once("value")
          .then(function(snapshot) {
            snapshot.forEach(function(childSnapshot) {
              var key = childSnapshot.key;
              var childData = childSnapshot.val();
              if (key ==  u_ref) {
                hello = childData.role;
               if(hello == 'employee'){
                this.props.navigation.navigate("driverloginScreen");
               }
              }
            });
          });


        }





      render() {
        return (
          <View style={styles.container}>
            <TextInput
              style={styles.input}
              underlineColorAndroid="transparent"
              placeholder="Email"
              placeholderTextColor="black"
              autoCapitalize="none"
              onChangeText={this.handleEmail}
            />

            <TextInput
              style={styles.input}
              underlineColorAndroid="transparent"
              placeholder="Password"
              placeholderTextColor="black"
              autoCapitalize="none"
              onChangeText={this.handlePassword}
            />

            <TouchableOpacity
              style={styles.submitButton}
              onPress={() => this.login(this.state.email, this.state.password)}
            >
              <Text style={styles.submitButtonText}> Submit </Text>
            </TouchableOpacity>
          </View>
        );
      }
    }
    export default Login;
...