Javascript 如何在react navigation中通过注销重置用户历史记录react navigation?
我正在使用react navigation和Firebase进行身份验证,以便用户在我的react navigation应用程序中移动到不同的屏幕 我创建了一个注销函数,用于注销用户并将其带到登录屏幕。然而,在左上角,我的应用程序为用户提供了返回应用程序的选项,而无需使用标记为他们刚刚注销的屏幕名称的按钮重新登录。有没有办法禁用此功能 这是我的注销屏幕:Javascript 如何在react navigation中通过注销重置用户历史记录react navigation?,javascript,react-native,firebase-authentication,react-navigation,Javascript,React Native,Firebase Authentication,React Navigation,我正在使用react navigation和Firebase进行身份验证,以便用户在我的react navigation应用程序中移动到不同的屏幕 我创建了一个注销函数,用于注销用户并将其带到登录屏幕。然而,在左上角,我的应用程序为用户提供了返回应用程序的选项,而无需使用标记为他们刚刚注销的屏幕名称的按钮重新登录。有没有办法禁用此功能 这是我的注销屏幕: 导出默认函数ProductScreen({navigation}){ 常量logOutPress=()=>{ 试一试{ auth() .sig
导出默认函数ProductScreen({navigation}){
常量logOutPress=()=>{
试一试{
auth()
.signOut()
.然后(()=>{
导航(“登录”)、警报(“您已注销”);
});
}捕获(错误){
console.log(“err”,error);
}
};
返回(
logOutPress()}>
注销
);
}
这里还有我的app.js
,我的react导航和Firebase就在这里:
const Stack=createStackNavigator();
导出默认函数App(){
const[loading,setLoading]=useState(true);
const[user,setUser]=useState(null);
useffect(()=>{
const usersRef=firebase.firestore().collection(“用户”);
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
usersRef
.doc(user.uid)
.get()
。然后((文档)=>{
const userData=document.data();
设置加载(假);
setUser(userData);
})
.catch((错误)=>{
设置加载(假);
});
}否则{
设置加载(假);
}
});
}, []);
如果(装载){
返回;
}
返回(
{用户(
{(道具)=>}
) : (
)}
);
}
我在index.js中使用此代码注销:
<Stack.Screen name="Main" component={Main} options={({ navigation,route }) => ({
title: '', headerLeft: () => (<TouchableOpacity onPress={() => (_singout())}
style={{ margin: 16, marginTop: Platform.OS == 'ios' ? StatusBar.currentHeight : 0 }}>
<Image resizeMode="contain" source={mylogoutImage} style={{ marginTop: 20 }} />
</TouchableOpacity>),
})} />
({
标题:'',标题左侧:()=>((_singout())}
style={{margin:16,marginTop:Platform.OS=='ios'?StatusBar.currentHeight:0}>
),
})} />
然后在\u singout()
函数中清除我的异步存储
我希望能帮助您。要禁止用户在注销后导航回上一屏幕,您需要清除产品屏幕中堆栈导航器的堆栈。我在下面提供了代码示例
从“react navigation”导入{StackActions,NavigationActions};
导出默认函数ProductScreen({navigation}){
常量logOutPress=()=>{
试一试{
auth()
.signOut()
.然后(()=>{
const resetAction=StackActions.reset({
索引:0,
操作:[NavigationActions.navigate({routeName:“Login”})],
});
导航、调度(重置动作);
警报(“您已注销”);
});
}捕获(错误){
console.log(“err”,error);
}
};
返回(
logOutPress()}>
注销
);
}
您需要重置整个导航堆栈。看看这个。。