1)使后退按钮在反应导航中消失
v5 或更新版本:
{
navigationOptions: {
title: 'MyScreen',
headerLeft: ()=> null,
// `headerLeft: undefined` should work too
// `headerLeft: null` should work but could trigger a TS error
}
NOTE:
v6有一个额外的选项:headerBackVisible: false
是否有后退按钮
在标题中可见。您可以使用它来显示后退按钮
headerLeft(如果您已指定)。
https://reactnavigation.org/docs/native-stack-navigator/#headerbackvisible https://reactnavigation.org/docs/native-stack-navigator/#headerbackvisible
v2-v4:
navigationOptions: {
title: 'MyScreen',
headerLeft: null
}
2)如果你想清理导航堆栈:
假设您位于要从中导航的屏幕上:
如果您使用的是react-navigation版本v5或更高版本您可以使用navigation.reset
or CommonActions.reset
:
// Replace current navigation state with a new one,
// index value will be the current active route:
navigation.reset({
index: 0,
routes: [{ name: 'Profile' }],
});
来源和更多信息在这里:https://reactnavigation.org/docs/navigation-prop/#reset https://reactnavigation.org/docs/navigation-prop/#reset
Or:
navigation.dispatch(
CommonActions.reset({
index: 1,
routes: [
{ name: 'Home' },
{
name: 'Profile',
params: { user: 'jane' },
},
],
})
);
来源和更多信息在这里:https://reactnavigation.org/docs/navigation-actions/#reset https://reactnavigation.org/docs/navigation-actions/#reset
对于旧版本的反应导航:
v2-v4 use StackActions.reset(...)
import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
index: 0, // <-- currect active route from actions array
actions: [
NavigationActions.navigate({ routeName: 'myRouteWithDisabledBackFunctionality' }),
],
});
this.props.navigation.dispatch(resetAction);
v1 use NavigationActions.reset
3) 对于 android,您还必须使用 BackHandler 禁用硬件后退按钮:
http://reactnative.dev/docs/backhandler.html http://reactnative.dev/docs/backhandler.html
或者如果你想使用钩子:
https://github.com/react-native-community/hooks#usebackhandler https://github.com/react-native-community/hooks#usebackhandler
否则,如果导航堆栈为空,应用程序将在按下 Android 硬件后退按钮时关闭。
其他来源:感谢在下面添加评论并帮助更新 v5+ 答案的用户。