React Native Android Hardware Кнопка "Назад" не работает должным образом

LoginScreen.js

this.props.navigator.push({
      screen: "auxxa.LandingScreen",
      passProps: { login: true },
      overrideBackPress: true,
      navigatorStyle: {
        navBarHidden: true
      }
    });

LandingScreen.js

 constructor(props) {
    super(props);
    this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
    //  this.props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this));
    this.state = {
      size: { width, height },
      tileData: null,
      isLoading: true,
      user_id: null,
      refetching: false,
      access_token: null
    };
  }
  componentWillMount() {
    BackHandler.addEventListener(
      "hardwareBackPress",
      this.handleBackButtonClick
    );
  }
  handleBackButtonClick() {
    console.log("check login " + this.props.login);
    if (this.backPressed && this.backPressed > 0) {
      if (this.props.login) {
        console.log("login");
        RNExitApp.exitApp();
      } else {
        console.log("root");
        this.props.navigator.popToRoot({ animated: false });
        return false;
      }
    }

    this.backPressed = 1;
    this.props.navigator.showSnackbar({
      text: "Press one more time to exit",
      duration: "long"
    });
    return true;
  }

  componentDidMount() {
    BackHandler.removeEventListener(
      "hardwareBackPress",
      this.handleBackButtonClick
    );
}

Я использовал реактивную нативную навигацию из Wix для целей своего приложения. Здесь я прикрепил экран входа и экран посадки. После успешного входа в систему перейдите к экрану посадки. После этого я нажму кнопку "Назад". Вернется к экрану входа. избежать этого. Как я могу сделать это? Я попытался выйти из приложения. Но оно также не работает должным образом. Пожалуйста, помогите мне, если кто-то знает это. Спасибо заранее.

2 ответа

Используйте этот вызов в функции handleBackButtonClick, и почему вы удаляете прослушиватель в componentDidMount?

this.props.navigator.resetTo({  screen: 'example.ScreenThree'})

,

Раскоментируйте this.props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this)); в вашем конструкторе для прослушивания событий навигации и добавления метода слушателя navigationEvent

onNavigatorEvent(event: NavigatorEvent) {
  if (event.type === 'NavBarButtonPress') {
    if (event.id === 'skill_information') {
      // Add here whatever you would like to do (this.handleBackButtonClick() for example)
    }
  }
Другие вопросы по тегам