Я реализовал 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;