Как Firebase Auth signOut знает, как перейти на начальную страницу? - PullRequest
1 голос
/ 29 января 2020

Я реализовал firebase.auth().signOut(), и он отлично работает, но я не знаю почему.

Знаете ли вы, почему, когда вызывается firebase.auth().signOut(), он выводит пользователя из системы, а затем автоматически перемещает ее на начальную страницу (root в моем стековом навигаторе) без передачи ей функции навигации по .then? Я бы ожидал, что мне придется дать ему .then, чтобы перейти на страницу вступления.

import React, { useState, useEffect } from "react";
import {
  StyleSheet,
  View,
  Text,
  ActivityIndicator,
  TouchableOpacity,
  TextInput
} from "react-native";
import * as firebase from "firebase";

const AccountScreen = () => {
  const db = firebase.firestore();
  let user = firebase.auth().currentUser;

  const [user_data, set_user_data] = useState(null);

  const SignOut = () => {
    set_user_data(null);
    firebase
      .auth()
      .signOut()
      .then(() => {
        console.log("successfully logged out");
      })
      .catch(error => {
        // An error happened.
        console.log("error logging out" + error);
      });
  };

  if (user) {
    useEffect(() => {
      db.doc(`users/${user.uid}`)
        .get()
        .then(doc => {
          set_user_data(doc.data());
        })
        .catch(error => {
          console.log("Error getting document:", error);
        });
    }, []);
    if (!user_data) {
      console.log("uh oh! there's a user but they don't have any data");
      return (
        <View style={styles.container}>
          <ActivityIndicator
            animating={true}
            style={styles.indicator}
            size="large"
          />
        </View>
      );
    } else if (user_data) {
      console.log("nice! there's a user and they have data");
      return (
        <View style={styles.container}>
          <TouchableOpacity
            style={styles.submitButton}
            onPress={() => SignOut()}
          >
            <Text style={styles.submitButtonText}>Sign Out</Text>
          </TouchableOpacity>
        </View>
      );
    }
  } else {
    console.log("no user at all!!");
    return (
      <View>
        <Text>There's an error here</Text>
      </View>
    );
  }
};

export default AccountScreen;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...