正确的GoBack的工作不反应导航

问题描述 投票:0回答:1
const RootNav = createStackNavigator(
  {
    Splash: {
        screen:Splash
    },
    BeforeLogin: {
        screen:BeforeLogin
    },    
    Signin: {
        screen:Signin,
    },
    Signup: {
        screen:Signup
    },
    Tabs: {
        screen:TabHolder,
    },
    ForgotPassword: {
        screen:ForgotPassword
    },
  } );

我使用这个componentWillMountBeforeLogin屏幕。我想关闭应用程序时,用户按下机器人后退按钮。

 componentWillMount() {          // In BeforeLogin Screen
   BackHandler.addEventListener('hardwareBackPress',() => {        
       BackHandler.exitApp(); 
     });  
  }

而在SignupSignin屏,我用下面的componentWillMount

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress',() => {   

      this.props.navigation.goBack();
      return true;

    });
  } 

我不能因为内登入画面使用this.props.navigation.navigate('BeforeLogin),我已经一个文本还没有账号?现在注册其导航到注册画面。

并且已经有帐户?立即登录我的注册屏幕,导航到签到屏幕上。

所有我想到目前为止的代码,我现在无法当我按下从BeforeLogin屏幕的Android后退按钮以关闭应用程序。

goBack(null) too, it takes me to theSplashscreen when I press android back button fromBeforeLogin`屏幕尝试过。

**********************第二种选择也没有工作******************** **

我在this.props.navigation.pop(1);Signup屏幕使用Signin。这需要我时,我按Android的后退按钮从Splash屏幕BeforeLogin屏幕。

请帮忙。

更新后的代码

请检查下面的链接。它的代码,我的问题。 https://gist.github.com/shubham6996/2c69f5a270d88c710ab61487639bf1af

reactjs react-native react-native-android react-navigation react-navigation-stack
1个回答
0
投票

在您要从点击(我假设在BeforeLogin)后事后关闭屏幕的屏幕:

constructor(props) {
    super(props);
    this._didFocusSubscription = props.navigation.addListener('didFocus', payload =>
      BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPressAndroid)
    );
  }

  componentDidMount() {
    this._willBlurSubscription = this.props.navigation.addListener('willBlur', payload =>
      BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPressAndroid)
    );
  }

  onBackButtonPressAndroid = () => {
BackHandler.exitApp();
return true;
}

你不能靠作出反应,作出反应的导航由于如何壮大,导航功能也没有(在事实上,他们得到了一些生命周期只因为它们仍然安装underneth一次)定期的生命周期。所以基本上你需要依靠正由导航本身发送的特殊事件。

© www.soinside.com 2019 - 2024. All rights reserved.