Я перемещаюсь к 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 выше) с пользовательской информацией
В любом случае Я собираюсь в '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
Что происходит в этом случае?!