goBack在React导航中无法正常工作

时间:2019-02-04 13:01:52

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

const RootNav = createStackNavigator(
  {
    Splash: {
        screen:Splash
    },
    BeforeLogin: {
        screen:BeforeLogin
    },    
    Signin: {
        screen:Signin,
    },
    Signup: {
        screen:Signup
    },
    Tabs: {
        screen:TabHolder,
    },
    ForgotPassword: {
        screen:ForgotPassword
    },
  } );

我正在componentWillMount屏幕上使用此BeforeLogin。当用户按下android后退按钮时,我想关闭该应用程序。

 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 back按钮时,我无法关闭该应用程序。

我使用goBack(null) too, it takes me to the Splash screen when I press android back button from“登录前”屏幕进行了尝试。

************************第二种替代方法也无效****************** *****

我在this.props.navigation.pop(1);Signup屏幕中使用了Signin。当我从Splash屏幕按下android后退按钮时,将我带到BeforeLogin屏幕。

请帮助。

更新代码

请检查以下链接。这是我的问题的代码。 https://gist.github.com/shubham6996/2c69f5a270d88c710ab61487639bf1af

1 个答案:

答案 0 :(得分:0)

在您要单击后随后要关闭屏幕的屏幕中(我假设在登录之前):

 var recognition = new webkitSpeechRecognition;
 var returnedSpeech=[];
 recognition.onresult = function(event) {

  if (event.results.length > 0) {
    speech.value = event.results[0][0].transcript;
    speech.form.submit();
    var x=speech.value
    document.write(x.value)

  }
}

由于堆栈导航在那里的工作方式,您不能依赖React导航中常规的生命周期(实际上,由于它们仍安装在neth下,它们仅获得一些生命周期)。因此,基本上,您需要依靠导航本身发送的特殊事件。