количество элементов в стеке реагирующей навигации - PullRequest
0 голосов
/ 09 октября 2019

Я хочу проверить количество элементов в моем стеке реагирующей навигации. если остался только один экран и пользователь нажимает кнопку «назад», приложение отображает сообщение о выходе из приложения. Мне приходилось использовать BackHandler на всех моих экранах, потому что я не нашел свойства, которое могло бы показывать элементы в стеке. это мои маршруты

const route1= {
    screen1,
    screen2
};

const route2= {
        screen3,
    screen4
};

export const stack1= createStackNavigator(route1);
export const stack2= createStackNavigator(route2);

export default {stack1, stack2};

это мой навигатор

createNavigator = (routeName, params) => {
        this.navigator = createAppContainer(createSwitchNavigator(routes, { initialRouteName: routeName, initialRouteParams: params }));
    }

1 Ответ

1 голос
/ 09 октября 2019

Поскольку вы используете реагирующую навигацию с использованием createStackNavigator, вы можете добавить элемент управления backHandler только внутри своего экрана initialRouteName, но вам нужно будет добавить eventListener, чтобы проверить, является ли экран, который вы смотрите, действительно тем, который сфокусирован,в противном случае он будет срабатывать и на других ваших экранах

Если это не так, чтобы проверить длину вашего стека, внутри вашего экрана вы можете просто проверить это с помощью своей навигационной реквизиты:

handleBackPress=()=>{
   if(this.props.navigation.state.routes.length===1){
      //do what you need
     return true
   }
   else {
   this.props.navigation.pop(1)
   return true
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...