成功的 Firebase 身份验证后 React Native App 无法导航
Posted
技术标签:
【中文标题】成功的 Firebase 身份验证后 React Native App 无法导航【英文标题】:React Native App not navigating after successful firebase auth 【发布时间】:2020-10-04 21:30:35 【问题描述】:我正在使用 expo 构建我的第一个 react 原生应用程序,到目前为止效果很好,但我只对一个问题感到沮丧:
成功登录后,我的应用没有重定向到“个人资料”。以下是我使用 firebase 处理登录/注册的方式:
class Login extends React.Component
state =
email: '',
password: ''
handleLogin = () =>
const email, password = this.state
Firebase.auth()
.signInWithEmailAndPassword(email, password)
.then(() => this.props.navigation.navigate('Profile'))
.catch(error => console.log(error))
render()
return (
<View style=styles.container>
<Text style=styles.headerText>traderank</Text>
<TextInput
style=styles.inputBox
value=this.state.email
onChangeText=email => this.setState( email )
placeholder='email'
autoCapitalize='none'
/>
<TextInput
style=styles.inputBox
value=this.state.password
onChangeText=password => this.setState( password )
placeholder='password'
secureTextEntry=true
/>
<TouchableOpacity
style=styles.button
onPress=this.handleLogin>
<Text style=styles.buttonText>login</Text>
</TouchableOpacity>
<Button
title="no account? sign up"
onPress=() => this.props.navigation.navigate('Signup')/>
</View>
)
注册同这个handleAuth函数:
handleSignUp = () =>
const email, password = this.state
Firebase.auth()
.createUserWithEmailAndPassword(email, password)
.then(() => this.props.navigation.navigate('Profile'))
.catch(error => console.log(error))
1)我知道这不是我的导航器的问题,因为我可以通过单击按钮在登录/注册之间切换。
2)我知道这不是firebase的问题,因为我可以创建一个新用户并在firebase控制台中看到该用户
3)点击登录时出现此错误:
错误:创建存储目录失败。Error Domain=NSCocoaErrorDomain Code=4 "文件“RCTAsyncLocalStorage”不存在。"
UserInfo=NSFilePath=/Users/me/Library/Developer/CoreSimulator/Devices/264989F0-2165-4E91-8EA3-48316590DE5A/data/Containers/Data/Application/A49D7AF5-C660-4292-9576-A986C3F97C38/Documents /ExponentExperienceData/%40anonymous%project-numbers/RCTAsyncLocalStorage, NSUnderlyingError=0x600000778180
Error Domain=NSPOSIXErrorDomain Code=2 "没有这样的文件或目录"
当我点击注册时它也应该重定向,但是当我创建一个新用户时,我看到这个登录到我的终端[当我点击注册时正在创建用户,我在 firebase 控制台中看到用户]:
创建存储目录失败。Error Domain=NSCocoaErrorDomain Code=4 "文件“RCTAsyncLocalStorage”不存在。"
在这两种情况下,RCTAsyncLocalStorage 似乎都存在问题。通常我可以用谷歌搜索错误并找出它,但在这方面没有找到太多。我正在使用 react native expo ~39.0.2,在 iPhone 11 (13.7) 上运行它。
提前致谢
【问题讨论】:
你能显示你的登录屏幕的测试吗? 好的,我一到家就会更新! @WenW 更新为完全登录 我的登录屏幕看起来不错。您是否有条件地在导航器中呈现个人资料页面?类似于这里正在做什么? reactnavigation.org/docs/auth-flow @WenW 还没有条件渲染。我应该那样做吗? 【参考方案1】:我认为这个错误的发生是因为你的模拟器有问题, 尝试更改它或使用其他手机并在其上运行应用程序。
有一个与您的问题相关的问题, 你可以从here查看它
【讨论】:
太棒了!我改变了模拟器来做一个不同的设备,它工作了 - 谢谢!【参考方案2】:同样的错误发生在我身上,确实问题出在 ios 模拟器上,为了解决它,我只需转到设备选项并擦除模拟器的所有数据和内容。这样问题就解决了
【讨论】:
以上是关于成功的 Firebase 身份验证后 React Native App 无法导航的主要内容,如果未能解决你的问题,请参考以下文章
成功身份验证后,Flutter Firebase 数据库权限被拒绝
使用 React Redux Redux-Thunk 进行 Firebase 身份验证
成功登录后 SwiftUI Firebase 身份验证关闭视图