Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react navigation中通过注销重置用户历史记录react navigation?_Javascript_React Native_Firebase Authentication_React Navigation - Fatal编程技术网

Javascript 如何在react navigation中通过注销重置用户历史记录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

我正在使用react navigation和Firebase进行身份验证,以便用户在我的react navigation应用程序中移动到不同的屏幕

我创建了一个注销函数,用于注销用户并将其带到登录屏幕。然而,在左上角,我的应用程序为用户提供了返回应用程序的选项,而无需使用标记为他们刚刚注销的屏幕名称的按钮重新登录。有没有办法禁用此功能

这是我的注销屏幕:

导出默认函数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()}>
注销
);

}
您需要重置整个导航堆栈。看看这个。。