0

我已经为此苦苦挣扎了好几天...当我尝试登录时,它不会自动将我导航到主屏幕,除非我关闭并打开应用程序。我正在使用 3 个独立的组件。但是,在我注册一次后,这个问题就不会发生了,它只发生在新帐户上。

const [userAuth, setUserAuth] = useState()

    useEffect(() => {
        const unsubscribe = auth.onAuthStateChanged(user => {
            user && auth.currentUser?.emailVerified ? setUserAuth(true) : setUserAuth(false)
        })
        return unsubscribe
    })

    return (
        <Provider store={store}>
            <NavigationContainer>
                <Drawer.Navigator>
                    <Drawer.Screen
                        name='main'
                        component={userAuth ? MainDrawer : AuthStack}
                    />
                </Drawer.Navigator>
            </NavigationContainer>
        </Provider>

这是我的 MainDrawer.js

export default function MainDrawer() {
    return (
        <Drawer.Navigator drawerContent={props => <DrawerScreen {...props} />}>
            <Drawer.Screen
                name='drawer'
                component={HomeStack}
                options={{ headerShown: false }}
            />
        </Drawer.Navigator>
    )
}

This is my HomeStack.js

    <Stack.Navigator initialRouteName='home'>
        <Stack.Screen name='home' component={TabNav}/>
        <Stack.Screen name='about' component={AboutUs}/>
        <Stack.Screen name='faq' component={FaqScreen}/>
        <Stack.Screen name='userTerms' component={TermsScreen} />
        <Stack.Screen name='privacy' component={PrivacyScreen} />
</Stack.Navigator>

4

1 回答 1

1

我相信问题出在你试图打电话的地方onAuthStateChanged,它应该是auth().onAuthStateChanged(...)。另外,我会稍微改变一下

 useEffect(() => {
    const unsubscribe = auth().onAuthStateChanged(firebaseUserResult => {
      firebaseUserResult && firebaseUserResult.emailVerified ? setUserAuth(true) : setUserAuth(false)
    })
    return unsubscribe
  })

于 2021-09-23T08:12:56.060 回答