Я думаю, что это ошибка, проблема как пара:
У меня есть это (стеки навигаторы внутри навигатора вкладок):
Где:
- Ab стек
- Aba компонент
- Компонент Abb
Когда я использую функцию navigation.goBack () в компоненте Abb, функция goBack отправляет меня в стек Aa вместо компонента Aba.
Это странная причина поведения, если я нажимаю Android, кнопка «Назад» отправляет меня в компонент Aba, и именно так должен работать навигация. goBack.
Это мой стек Ab
const ComplementFormStack = ({ navigation, route, onSetGoToSyncData }) => {
return (
<Stack.Navigator
initialRouteName="ComplementForms"
screenOptions={{
...stackScreenOptions({
onPressLeftIcon:
route?.state?.index > 0 ? navigation.goBack : navigation.openDrawer,
onPressRightIcon: onSetGoToSyncData,
index: route?.state?.index
})
}}
>
<Stack.Screen
name="ComplementForms"
component={ComplementForms}
options={{
title: "Formularios"
}}
/>
<Stack.Screen
name="FilterIndividualTable"
component={FilterIndividualTable}
options={{
title: "Filtros de busqueda"
}}
/>
</Stack.Navigator>
);
};
это моя вкладка A:
const SettingsTab = () => (
<Tab.Navigator initialRouteName="DataRecorded" backBehavior="order">
<Tab.Screen
name="DataRecorded"
component={DataRecordedStack}
options={{
title: "Registros"
}}
/>
<Tab.Screen
name="ComplementForms"
component={ComplementFormsStack}
options={{
title: "Formularios"
}}
/>
</Tab.Navigator>
);
это stackScreenOptions, если вы хотите знать:
const stackScreenOptions = ({
onPressLeftIcon = () => {},
onPressRightIcon = () => {},
index
}) => {
return {
headerStyle: {
backgroundColor: "white",
height: hp(8.3)
},
headerTintColor: Color.primary.dark,
headerTitleStyle: {
fontSize: hp(2.6),
},
headerLeft: () => {
if (index > 0) {
return <GoBackBtn onPress={onPressLeftIcon} />;
}
return <ButtonDrawer onPress={onPressLeftIcon} />;
},
headerRight: () => {
return <SyncButton onPress={onPressRightIcon} />;
}
};
};