React Navigation 5, получить имя ближайшего родительского навигатора

Представьте, что у вас есть такая навигационная система:

  -TabNavigator
      --TabA
          ---StackNavigatorA
             ----ScreenA
             ----StackNavigatorB
      --TabB
          ---StackNavigatorB
             ----ScreenB

Есть ли способ, используя React Navigation 5, получить имя ближайшего родительского навигатора? Например, если я нахожусь на экране ScreenA и выполняю нужный мне метод, это вернет StackNavigatorA

Что-то вроде этого:

     const currentNavigator = navigation.getCurrentNavigator(); // <--- getCurrentNavigator doesn't exist, this is pseudocode.
     console.log(currentNavigator); // Will show the closest parent navigator

Спасибо.


person Victor Molina    schedule 03.11.2020    source источник


Ответы (1)


Чтобы получить ближайший родитель навигации, вы можете использовать dangerousGetParent() из навигационной опоры.

Кроме того, этот метод вернет неопределенное значение, если нет родительского навигатора. Обязательно всегда проверяйте неопределенность при использовании этого метода.

Чтобы проверить, является ли навигатор своим родителем, вы можете определить пользовательский ключ для каждого навигатора, чтобы при необходимости выполнять проверки.

person Bruno Cardoso    schedule 03.11.2020
comment
Предоставляет ли он имя навигатора? Я вижу только его ключ (случайный). - person Victor Molina; 03.11.2020
comment
Вы можете предоставить свой навигационный ключ, используя key prop в Navigator. - person Bruno Cardoso; 03.11.2020
comment
Не работает. Я делаю ‹Stack.Navigator key=ProfileStack ... /› и когда я делаю console.log(navigation.dangerousGetParent().state), я вижу ключ: stack-Icyp6Vv45Kq_7D5G6if7L - person Victor Molina; 03.11.2020