Reactjs React Native:如何在登录或注销时以编程方式刷新应用程序?

Reactjs React Native:如何在登录或注销时以编程方式刷新应用程序?,reactjs,react-native,firebase-authentication,expo,Reactjs,React Native,Firebase Authentication,Expo,我的应用程序使用Expo和React Native。我已经使用Firebase实现了身份验证 我的问题是,当我登录或注销时,导航堆栈应该更改,但不会刷新。唯一的方法是,如果我修改代码并实现快速刷新。当身份验证状态更改时,控制台日志会打印,但由于某些原因,NavigationContainer不会更改。我是否可以通过编程创建快速刷新 这是我的密码: // App.js import React from 'react'; import { StyleSheet, Text, TouchableOp

我的应用程序使用Expo和React Native。我已经使用Firebase实现了身份验证

我的问题是,当我登录或注销时,导航堆栈应该更改,但不会刷新。唯一的方法是,如果我修改代码并实现快速刷新。当身份验证状态更改时,控制台日志会打印,但由于某些原因,NavigationContainer不会更改。我是否可以通过编程创建快速刷新

这是我的密码:

// App.js
import React from 'react';
import { StyleSheet, Text, TouchableOpacityComponent, View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import AuthStackScreen from './screens/AuthStack/AuthStackScreen';
import AppStackScreen from './screens/AppStack/AppStackScreen';
import Firebase from './firebase/Firebase';


const App = () => {
  let loggedIn;

  if(Firebase.auth().currentUser) {
    loggedIn = true;
  }

  Firebase.auth().onAuthStateChanged(user => {
    if(user) {
      loggedIn = true;
      console.log("logged in")
    } else {
      loggedIn = false;
      console.log("logged out")
    }
  })

  return (
    <NavigationContainer>
      { loggedIn ? <AppStackScreen/> : <AuthStackScreen/> }
    </NavigationContainer>
  )
  
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

export default App;
//App.js
从“React”导入React;
从“react native”导入{样式表、文本、TouchableOpacityComponent、视图};
从'@react-navigation/native'导入{NavigationContainer};
从“/screens/AuthStack/AuthStackScreen”导入AuthStackScreen;
从“./screens/AppStack/AppStackScreen”导入AppStackScreen;
从“./Firebase/Firebase”导入Firebase;
常量应用=()=>{
让罗格丁;
if(Firebase.auth().currentUser){
loggedIn=true;
}
Firebase.auth().onAuthStateChanged(用户=>{
如果(用户){
loggedIn=true;
console.log(“登录”)
}否则{
loggedIn=false;
控制台日志(“注销”)
}
})
返回(
{loggedIn?:}
)
}
const styles=StyleSheet.create({
容器:{
弹性:1,
背景颜色:“#fff”,
对齐项目:“居中”,
为内容辩护:“中心”,
},
});
导出默认应用程序;

您愿意重新渲染组件。 满足你需要的东西是

基本上你应该转换你的

 let loggedIn;
进入


您愿意重新渲染组件。 满足你需要的东西是

基本上你应该转换你的

 let loggedIn;
进入