Реакции-навигация - передача параметров во вложенный навигатор (получение параметров в компоненте Drawer, но НЕ получение его в основных маршрутах)

Я перехожу к StackNavigator (маршрут по умолчанию которого является MaterialBottomTabNavigator), завернутый в DrawerNavigator с параметром. Я могу получить параметр в пользовательском компоненте Drawer. Но не может получить то же самое на экране StackNavigator. Я попытался избежать BottomTabNav, изменив маршрут по умолчанию на простой экран, но результат все тот же.

Вот мой экран приборной панели - вкладка навигатор

const Dashboard = createMaterialBottomTabNavigator(
    {
        Tab1: Tab1Component,
        Tab2: Tab2Component,
        ...
    }
);

Это еще один экран, к которому я перехожу с одной из вышеуказанных вкладок.

class Otherscreen extends Component { 
    ...
    render() {
        ...
        <Text>{
            this.props.navigation.getParam('userInfo', 'Not Set')
            /* FAILS!!! */
        }</Text>
        ...
    } 
    ...
}

Следовательно, это стековый навигатор, содержащий

const AppStack = createStackNavigator(
    {
        'Dashboard': {
            'screen': Dashboard,
        },
        'Otherscreen': {
            'screen': Otherscreen
        }
    }
);

Мне нужен ящик для всего этого, так что завернул все это в

const AppDrawerNavigator = createDrawerNavigator(
    { //Main screen
        'AppStack': AppStack
    },
    { //Drawer
        'contentComponent': Drawer
    }
);

где ящик

class Drawer extends Component { 
    ...
    render() {
        ...
        <Text>{
            this.props.navigation.getParam('userInfo', 'Not Set')
            /* WORKS!!! */
        }</Text>
        ...
    } 
    ...
}

Для аутентификации и других вещей, таких как всплеск, я использую

const AppNavigator = createSwitchNavigator({
    'Splash': Splash,
    'Auth': AuthStack,
    'App': AppDrawerNavigator,
});

export default createAppContainer(AppNavigator);

Теперь я пытаюсь это сделать.

  • В "Всплеске" я проверяю информацию о последнем пользователе.
    • Если я получаю его, я проверяю токен сеанса, чтобы увидеть, не истек ли он
      • Если не истек срок действия, я перехожу к "App" (экземпляр AppDrawerNavigator выше), с userinfo
    • Если я не получаю его, или если сессия истекла, я перехожу к Auth
      • Когда аутентификация закончена, я перехожу к "App" (экземпляр AppDrawerNavigator выше) с userinfo

В любом случае, я собираюсь "App" с тем же параметром userinfo, и я МОГУ получить параметр userinfo в компоненте Drawer.

Но я не получаю его с любого другого экрана в AppStack. Я даже попытался избежать промежуточного BottomTabNav, переместившись на другой экран, чтобы сделать его по умолчанию, а переход к "приложению" переходит к другому экрану, но параметр userinfo все еще недоступен.

Я полагаю, что я должен быть в состоянии получить параметр userinfo из this.props.navigation как на (A) компоненте выдвижного ящика, так и (B) экранах AppStack, или, по крайней мере, на его начальном экране, т.е. компоненте Dashboard

Вот минимальная демонстрация: https://github.com/bhave-abhay/PassPropsIntoNestedNav/ Кроме того, это отчет об ошибке https://github.com/react-navigation/react-navigation/issues/5646

Что происходит в этом случае?!

0 ответов