Мне не удается заставить backHandler (аппаратную кнопку «Назад» на Android) работать с моим ящиком и стековой навигацией при React-Navigation. Кнопка «Назад» отлично работает на экране домашней страницы, но перестает работать, как только я перехожу к следующему экрану, находится ли экран на экране ящика или в стеке. Вот мой Drawer и MainStackNavigator.
Примечание: объединение этих двух не помогло мне, так как оба они не являются частью компонента, и я использую в своем приложении избыточность
Anyone есть идеи, как это можно решить?
DrawerNavigatior
const DrawerNavigator = createDrawerNavigator(
{
Homep: Homepage,
Home: HomeScreen,
Shop: ShopScreen,
Order: OrdersScreen,
Wishlist: WishlistScreen,
Search: SearchScreen,
Profile: ProfileScreen,
ShoppingBag: ShoppingBagScreen,
},
MainStackNavigator
const MainStackNavigator = createStackNavigator(
{
Drawer: { screen: DrawerStackNavigator },
CategoryProductGrid: { screen: CategoryProductGridScreen },
Settings: { screen: SettingsScreen },
Contact: { screen: ContactUsScreen },
EditProfile: { screen: EditProfileScreen },
ShippingAddress: { screen: ShippingAddressScreen },
LocList: { screen: LocationList },
ShippingMethod: { screen: ShippingMethodScreen },
PaymentMethod: { screen: PaymentMethodScreen },
AddACard: { screen: AddACardScreen },
Checkout: { screen: CheckoutScreen },
Bag: { screen: ShoppingBagScreen },
},
Я использую прослушиватель событий BackHander следующим образом
componentDidMount() {
this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}
componentWillUnmount() {
this.backHandler.remove()
}
handleBackPress = () => {
Alert.alert(
'Exit App',
'Exiting the application?',
[
{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel'
},
{
text: 'OK',
onPress: () => BackHandler.exitApp()
}
],
{
cancelable: false
}
);
return true;
};