React Native从导航堆栈清除上一个屏幕

时间:2019-06-08 11:48:44

标签: react-native react-navigation react-navigation-stack

我正在出于学习目的开发React本机应用程序。我现在正在使用React Navigation实现导航。我正在使用堆栈导航。但是我找不到从导航历史记录中删除前一个屏幕并杀死该应用程序的方法。

我这样设置导航。

const AppStack = createStackNavigator({
  Login: {
    screen: Login
  },
  Register: {
    screen: Register
  },
  Events: {
    screen: Events
  }
});

如上面的代码所示,默认情况下,我打开“登录”屏幕。登录后,我这样打开“事件”屏幕。

this.props.navigation.navigate('Events');

问题在于,当我进入事件页面时,可以在导航栏中看到后退按钮。当我按下它时,我被带回到登录页面。但是我想要的是,登录后,我想从历史记录中删除登录页面。当我进入活动页面时,当我单击“后退”按钮时,该应用程序将关闭。也许它可能没有后退按钮。在这种情况下,它就像第一个屏幕一样。我该怎么办?

5 个答案:

答案 0 :(得分:4)

从V5版开始

this.props.navigation.reset({
        index: 0,
        routes: [{name: 'Events'}],
      });

答案 1 :(得分:3)

成功完成登录或注册后,您必须按如下所示重置导航堆栈,

import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
    index: 0,
    actions: [NavigationActions.navigate({ routeName: 'Events' })],
});
this.props.navigation.dispatch(resetAction)

,此外,在Event页中,如果您不想在其中添加标题,则必须添加一个静态方法。

static navigationOptions = navigation => ({
        header: null
});

希望它会对您有所帮助。

答案 2 :(得分:3)

在V5.x中,我们有reset方法

navigation.reset({
  index: 0,
  routes: [{ name: 'ScreenName' }],
});

答案 3 :(得分:0)

您需要的是重置功能

this is a string....  C=3
this is a string..g.
this is a string.ng.
this is a stringing.
this is a strinring.
this is a stritring.
this is a strstring.
this is a st string.
this is a s  string. C=2
this is a a  string.
this is   a  string.
this iss  a  string.  C=1
this iis  a  string.  
this  is  a  string.  C=0

答案 4 :(得分:-1)

import {StackActions, NavigationActions} from 'react-navigation';

this.props.navigation.dispatch(StackActions.reset({
     index: 0, key: null, actions: [NavigationActions.navigate({ routeName: 'Events' })]
 }));