我正在尝试在我的React本机应用中实现Firebase身份验证,并试图在React导航的身份验证流程中使用受保护的路由。但是,即使我具有所有可用的功能(登录,注销等),我也不知道如何在应用程序中保存状态(使用redux)并使用该状态更改导航中的路线。如果有人可以帮忙,将不胜感激。
从我发现的文档中,我必须对人员状态使用侦听器:
function checkSignIn(){
Firebase.auth().onAuthStateChanged(function(user) {
if (user) {
return true
} else {
return false
}
})
}
但是我不确定以后该怎么办
您没错,在函数之后,如果用户不为空,则可以将其重定向到主屏幕,如果为空,则将其重定向到登录页面:
function checkSignIn(){
Firebase.auth().onAuthStateChanged(function(user) {
if (user) {
navigation.navigate("Home")
} else {
navigation.navigate("Login")
}
})
}
所建议的方法的唯一问题是,当您重新加载页面时,您仍然不知道用户的状态,因此很难确定要重定向到的位置,或者一旦状态为“已解决”。
[我所做的是,在应用程序的顶层(我已订阅onAuthStateChanged的地方)中,包含了一个状态,该状态指定是否从firebase检索身份验证状态。在此之前,我只渲染一个加载动画,一旦有了状态(是用户还是null),就可以决定重定向到的位置。