При переходе к экрану B в stackNavigator он также отображает экран A - PullRequest
0 голосов
/ 08 мая 2019

Я наблюдаю неожиданное поведение при переходе к определенному компоненту в навигаторе стека.Кажется, что, несмотря на желание перейти к определенному компоненту, также отображается второй компонент стека.Его не видно, но я вижу его в собственном отладчике реагирования и вижу побочные эффекты его выполнения (например, если он запускает запрос graphql, например).Я могу подтвердить это, распечатав сообщение на консоли внутри метода render().

Например, для данного стекового навигатора:


import { createStackNavigator } from "react-navigation";
import { Inner1 } from "./Inner1";
import { Inner2 } from "./Inner2";
import { Inner3 } from "./Inner3";

export const InnerNavigator = createStackNavigator(
  {
    Inner1: { 
      screen: Inner1,
      path: 'inner/1',
      navigationOptions: () => ({
        headerTitle: 'Inner 1 Screen',
        headerLeft: null
      })
    },
    Inner2: { 
      screen: Inner2,
      path: 'inner/2',
      navigationOptions: () => ({
        headerTitle: 'Inner 2 Screen',
        headerLeft: null
      })
    },
    Inner3: {
      screen: Inner3,
      path: 'inner/3',
      navigationOptions: () => ({
        headerTitle: 'Inner 3 Screen',
        headerLeft: null
      })
    }
  },
  {
    headerMode: "screen",
    navigationOptions: {
      header: null
    }
  }
);

При вызове navigation.navigate('Inner3'); из другого компонента в другом местеrender() метод fo Inner1 вызывается в дополнение к Inner3.Я не ожидал этого, но, возможно, я неправильно настроил навигатор?

Вот пример приложения, демонстрирующего поведение:

https://snack.expo.io/@alexwb/4f7450

...