#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:
В итоге я использовал то, что было рекомендовано документацией, то есть разместил все мои экраны в моем стеке приложений вместо отдельных вложенных стеков.