【问题标题】:React Native App not navigating after successful firebase auth成功的 Firebase 身份验证后 React Native App 无法导航
【发布时间】: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 还没有条件渲染。我应该那样做吗?

标签: ios firebase react-native firebase-authentication


【解决方案1】:

我认为这个错误的发生是因为你的模拟器有问题, 尝试更改它或使用其他手机并在其上运行应用程序。

有一个与您的问题相关的问题, 你可以从here查看它

【讨论】:

  • 太棒了!我改变了模拟器来做一个不同的设备,它工作了 - 谢谢!
【解决方案2】:

同样的错误发生在我身上,确实问题出在 iOS 模拟器上,为了解决它,我只需转到设备选项并擦除模拟器的所有数据和内容。这样问题就解决了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2017-07-12
    • 2016-12-25
    • 2017-01-22
    • 2017-06-16
    相关资源
    最近更新 更多