1

我有这个登录屏幕

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 菜单按钮返回应用程序时,该消息仍然存在。我该如何解决?

4

0 回答 0