[英]Firebase and React Native: onAuthStateChanged doesn't get triggered
因此,我正在使用 Firebase 開發我的第一個 React 本機應用程序,並且我的代碼中有以下結構:
ComponentDidMount(){
this.verifySession();
console.log("Component did mount");
}
verifySession = () =>{
console.log("inside VS");
firebase.auth().onAuthStateChanged(user =>{
if(user){
this.props.navigation.navigate('Dashboard');
console.log("dashboard");
}else{
this.props.navigation.navigate('Login');
console.log("Login");
}
});
}
問題是,我的 verifySession function 沒有被觸發。 實際上,我沒有收到任何日志,所以我認為 ComponentDidMount 也沒有被執行。 此代碼放置在我的 LoadingScreen 組件中。
這是我的 app.js,我在其中初始化 Firebase conf:
import * as firebase from 'firebase';
import {firebaseConfig} from './data/config';
const Stack = createStackNavigator();
firebase.initializeApp(firebaseConfig);
我還為我的 LoadingScreen 嘗試了以下方法:
import Dashboard from './dashboard';
import Login from './login';
render(){
firebase.auth().onAuthStateChanged(function(user){
if(user){
return (<Dashboard/>);
}else{
return (<Login/>);
}
});
return(
<View>
<Text>Verifying session...</Text>
</View>
)
}
登錄應該被渲染,但它顯示“驗證會話”,這讓我想如果語句根本沒有被執行。
對此問題的任何想法/建議將不勝感激。
onAuthStateChanged
旨在添加觀察者而不是直接調用。 可能它沒有觸發,因為用戶的登錄狀態根本沒有改變,而且您沒有嘗試讓任何人登錄,所以沒有什么可以觸發它。 嘗試實現auth().createUserWithEmailAndPassword(email, password)
或 `auth().signInWithEmailAndPassword(email, password)' 並測試用戶創建/登錄。
這篇文章也可能有用; 它將身份驗證觀察器放在一個單獨的組件中,並允許您根據用戶的登錄狀態在兩個導航堆棧之間導航: https://heartbeat.fritz.ai/how-to-manage-authentication-flows-in-react-native- with-react-navigation-v5-and-firebase-860f57ae20d3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.