Reactjs React Native:如何在登录或注销时以编程方式刷新应用程序?
我的应用程序使用Expo和React Native。我已经使用Firebase实现了身份验证 我的问题是,当我登录或注销时,导航堆栈应该更改,但不会刷新。唯一的方法是,如果我修改代码并实现快速刷新。当身份验证状态更改时,控制台日志会打印,但由于某些原因,NavigationContainer不会更改。我是否可以通过编程创建快速刷新 这是我的密码: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
// 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;
进入