goBack在React Navigation中无法正常工作


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

我在BeforeLogin屏幕中使用这个componentWillMount。我想在用户按下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后退按钮时,我现在无法关闭应用程序。

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

**********************第二种选择也不起作用**********************

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

请帮忙。

更新代码

请查看下面的链接。这是我问题的密码。https://gist.github.com/shubham6996/2c69f5a270d88c710ab61487639bf1af

在点击后想要关闭屏幕的屏幕中(我假设在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;
}

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

相关内容

  • 没有找到相关文章

最新更新