navigation.goНеправильное поведение назад - стек внутри навигатора вкладок - PullRequest
0 голосов
/ 13 марта 2020

Я думаю, что это ошибка, проблема как пара:

У меня есть это (стеки навигаторы внутри навигатора вкладок):

  • вкладка
    • Aa стек
    • Ab стек

Где:

  • 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} />;
    }
  };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...