Скрытие пользовательской панели вкладок во вложенной навигации по стеку

#react-native #expo #react-native-navigation

#react-native #выставка #react-native-навигация

Вопрос:

У меня есть панель вкладок, похожая на приведенную ниже. внутри каждой вкладки у меня есть навигатор вложенного стека. Я хочу скрывать панель вкладок всякий раз, когда стек не находится на своем начальном маршруте. В документации указано, что предполагается поместить стек в начальный навигатор стека.

https://reactnavigation.org/docs/hiding-tabbar-in-screens/

Однако это не имеет смысла, и поскольку у меня есть моя регистрация и все маршруты, по которым клиент не вошел в систему, я думаю, что нелогично размещать все приложение в одном навигаторе стека. Кроме того, это уменьшает цель использования навигации по вкладкам в первую очередь.

Я также попробовал tabBarVisible prop и изменил это условно. Однако это вызывает у меня некоторые проблемы. Во-первых, это, похоже, не работает на пользовательской панели вкладок mu. Кроме того, это дает мне состояние каждой вкладки для каждого рендеринга. Таким образом, это вызывает некоторое нежелательное поведение. наконец, это не рекомендуется из документации.

 <Tab.Navigator
 tabBar={props => (
  <TabBar
     onPress={tabIndex => changeTab(tabIndex, props)}
     display={false}
     values={[
       { title: "Balance", icon: 'view-dashboard'},
       { title: "Faktura", icon: 'file-pdf'},
       { title: "Rabatter", icon: 'gift'},
       { title: "Profil", icon: 'account-details'},
       { title: "Mere", icon: 'dots-horizontal' }
     ]}/>
   )}>
  <Tab.Screen
  name="Balance"
  component={BalanceStackNavigator}
  />
  <Tab.Screen
  name="Invoice"
  component={InvoiceStackNavigator}
  />
  <Tab.Screen
  name="BlueBenefit"
  component={BlueBenefitStackNavigator}
  />
  <Tab.Screen
  name="User"
  component={UserStackNavigator}
  />
  <Tab.Screen
  name="CrossSale"
  component={CrossSaleStackNavigator}
  />
</Tab.Navigator>
  

Итак, в основном мой вопрос заключается в том, как я добиваюсь такого поведения скрытия вкладок, когда они не находятся на начальном маршруте наилучшим образом?

Ответ №1:

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