繁体   English   中英

反应本机 firebase onAuthStateChanged 不工作

[英]react native firebase onAuthStateChanged not working

我在查询用户之前是否登录过。 我想根据结果将它们 go 到不同的页面。 onChangeState 不工作

import { firebase } from './config';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function App() {
  const [initializing, setInitializin] = useState(true);
  const [user, setUser] = useState('');

  function onAuthStateChanged(user) {
    setUser(user);
    if (initializing) setInitializin(false);
  }
  useEffect(() => {
    const subscriber = firebase.auth().onAuthStateChanged(onAuthStateChanged);
    return subscriber;
  }, []);
  if (initializing) return null;
  if (!user) {
    return (

      <NavigationContainer independent={true}>
        <Stack.Navigator>
          <Stack.Screen
            name='Login'
            component={LoginScreen}
            options={{ headerShown: false, headerBackVisible: false }}
          />
          <Stack.Screen
            name='Create'
            component={CreateAccount}
            options={{ headerShown: true, headerTitle: 'Create An Account' }} />
        </Stack.Navigator>
      </NavigationContainer>

    );
  } else if (user)
    return (
      <NavigationContainer independent={true}>
        <Stack.Navigator>
          <Stack.Screen
            name='Daily'
            component={DailyScreen}
            options={{ headerShown: false, headerBackVisible: false }} />
          <Stack.Screen
            name='Detail'
            component={Detail}
            options={{ headerShown: false, headerBackVisible: false }} />
        </Stack.Navigator>
      </NavigationContainer>
    ); return (
      <NavigationContainer>
        <App />
      </NavigationContainer>
    );
}
export default () => {
  return (
    <NavigationContainer independent={true}>
      <App />
    </NavigationContainer>
  )
}

如果用户之前登录过,我希望它到 go 到 DailyScreen 页面。 但它总是转到 LoginScreen 页面。

试试这个改变

const [user, setUser] = useState('');

const [user, setUser] = useState(null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM