#react-navigation #react-navigation-v5
#реагирующая навигация #реагирующая навигация-v5
Вопрос:
В нашем приложении есть несколько вкладок, каждая вкладка содержит стек. Нам нужно иметь возможность перемещаться с экрана в стеке, принадлежащем одной вкладке, на конкретный экран в стеке, принадлежащем другой вкладке. Это можно сделать следующим образом navigation.navigate(«tab2″, {screen:»screen2»}).
Мы используем react-navigation версии 5
Текущее поведение
Проблема в том, что если я ранее не переходил к начальному маршруту для стека назначения (route), screen2 теперь является единственным экраном в стеке. Мне нужно каким-то образом всегда следить за тем, чтобы экран, указанный в initialRouteName, добавлялся в стек первым.
Ожидаемое поведение
Если вы укажете initialRouteName, этот маршрут всегда добавляется в качестве первого маршрута в стеке, даже если вы переходите к конкретному маршруту, определенному в стеке.
Установка lazy = false решила бы проблему, но важно не инициализировать «начальный экран маршрута» перед фактическим переходом к экрану в стеке.
Возможно, это работает так, как задумано, но есть ли какой-либо способ добиться ожидаемого поведения?
Как воспроизвести
Проблема может быть воспроизведена в этой закуске, нажмите кнопку «Перейти к экрану2 на вкладке 2» на «tab1». Убедитесь, что вы не нажали на Tab2, прежде чем делать это. Теперь вы перейдете к Screen2 на Tab2 без возможности перехода к экрану, указанному в initialRouteName.
Это более или менее копия этой проблемы
Ответ №1:
Обнаружил, что вы действительно можете перейти к вложенному навигатору и убедиться, что маршрут, указанный в initialRouteName, является начальным маршрутом. Это можно сделать, указав initial:false
вот так:
navigation.navigate("tab2", {screen:"screen2", initial: false})
Документацию можно найти здесь