我有这个登录屏幕
export default class Login extends Component {
_navigateToHome(){
this.props.navigator.immediatelyResetStack([Router.getRoute('home')], 0);
}
render(){
return(
<TouchableOpacity
onPress={() => {this._navigateToHome();}}
activeOpacity={0.7}>
<Text>Login</Text>
</TouchableOpacity>
);
}
}
当我按回我的 Android 时,它工作正常。没有堆栈历史记录的应用程序退出。
然后在我的主屏幕上,我有一个带有注销菜单的抽屉导航器
export default class Home extends Component {
render(){
<DrawerNavigation
drawerPosition="left"
drawerWidth={300}
initialItem="home"
>
<DrawerNavigationItem
id={item.route}
selectedStyle={styles.selectedItemStyle}
renderTitle={isSelected => renderTitle('Home', isSelected)}
>
<View>Home Page</View>
</DrawerNavigationItem>
<DrawerNavigationItem
id={item.route}
selectedStyle={styles.selectedItemStyle}
renderTitle={isSelected => renderTitle('Logout', isSelected)}
onPress={()=> {
this.props.navigator.immediatelyResetStack([Router.getRoute('login')], 0);
}}
/>
</DrawerNavigation>
}
}
当我从导航抽屉按注销时,它会返回登录屏幕,但是当我从登录屏幕按返回时,应用程序没有退出并且我收到以下警告:
Possible Unhandled Promise Rejection (id: 0): TypeError: undefined is not an object (evaluating 'currentNavigatorState.index')
我也尝试了另一种解决方法,我使用replace
而不是immediatelyResetStack
这样
onPress={() => this.props.navigator.replace('login')}
但我仍然收到完全相同的警告消息,我尝试BackHandler
在我的登录屏幕上也放
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', function () {
BackHandler.exitApp();
});
}
应用程序将退出,但是当我通过 android 菜单按钮返回应用程序时,该消息仍然存在。我该如何解决?