Как обработать кнопку возврата Android в навигаторе Drawer, со стеком, вложенным внутрь - PullRequest
1 голос
/ 03 апреля 2020

У меня есть Навигатор ящиков поверх Навигатора стека, затем с любого вложенного экрана внутри стека, по нажатию кнопки «Назад» оборудования, root уровень Слушатели BackHandler экрана навигатора ящиков вызывают.

const Drawer = createDrawerNavigator();

const DrawerNavigator = props => {
  return (
    <Drawer.Navigator
      drawerContent={props => <DrawerScreen {...props} />}
      initialRouteName={'HomeScreen'}
      drawerPosition={'right'}
      drawerStyle={{width: '100%', backgroundColor: 'transparent'}}
      screenOption={{backBehavior: 'order'}}>
      <Drawer.Screen
        name="App"
        component={AppStackNavigator}
        options={{gestureEnabled: false}}
      />
    </Drawer.Navigator>
  );
};

const RootStack = createSwitchNavigator(
  {
    Login: LoginStackNavigator,
    Drawer: DrawerNavigator,
    RouteNavigator: RouteNavigatorClass,
    OnBoardStack: OnboardStackNavigator,
    OTP: {
      screen: OTPScreen,
    },
  },
  {
    initialRouteName: 'RouteNavigator',
  },
);

Если я нажимаю аппаратную кнопку «Назад» на каком-либо экране, вызывается обработчик «Назад» на главном экране… это начиналось, когда я обновлял реагирующую навигацию 2.x до 5. х

1 Ответ

0 голосов
/ 03 апреля 2020

Я использовал обработчик реакции-навигации от https://github.com/vonovak/react-navigation-backhandler,

import { AndroidBackHandler } from "react-navigation-backhandler";

class SomeComponent extends React.Component {
  onBackButtonPressAndroid = () => {

    if (youWantToHandleTheBackButtonPress) {
      // do something
      return true;
    }

    return false;
  };

  render() {
    return (
      <AndroidBackHandler onBackPress={this.onBackButtonPressAndroid}>
        <BodyOfYourScreen />
      </AndroidBackHandler>
    );
  }
}

и это сработало, я не смог сделать это с помощью BackHandler.addEventListner (),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...