React-навигационные динамические дочерние экраны - PullRequest
0 голосов
/ 19 октября 2018

Я нахожусь в процессе создания приложения для социальных сетей, и у меня есть следующая схема перехода экрана:

Main -> Профиль -> Подписчики -> Профиль Джона -> Подписчики Джона-> Профиль Эмили -> ....

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

Вот часть маршрутизатора, чтобы выразить мою проблему:

const appStack = createStackNavigator(
  {
    [PROFILE_STACK]: { screen: profileStack },
    [PROFILE_FOLLOWERS_STACK]: { screen: profileFollowersStack },
    [PROFILE_FOLLOWINGS_STACK]: { screen: profileFollowingsStack }
  },
  {
    initialRouteName: PROFILE_STACK,
    headerMode: "none"
  }
);

const profileStack = createStackNavigator(
  {
    [PROFILE]: {
      screen: UserProfileScreen,
      navigationOptions: () => ({
        header: null
      })
    }
  },
  {
    initialRouteName: PROFILE
  }
);

const profileFollowersStack = createStackNavigator(
  {
    [PROFILE_FOLLOWERS]: {
      screen: UserFollowersScreen,
      navigationOptions: () => ({
        header: null
      })
    }
  },
  {
    initialRouteName: PROFILE_FOLLOWERS
  }
);

const profileFollowingsStack = createStackNavigator(
  {
    [PROFILE_FOLLOWINGS]: {
      screen: UserFollowingsScreen,
      navigationOptions: () => ({
        header: null
      })
    }
  },
  {
    initialRouteName: PROFILE_FOLLOWINGS
  }
);

export const goUserProfile = function(navigation, userId) {
  const { navigate } = navigation;
  navigate(PROFILE_STACK, {
    userId: userId
  });
};

export const goUserFollowers = function(navigation, userId) {
  const { push } = navigation;
  push(PROFILE_FOLLOWERS_STACK, {
    userId: userId
  });
};

export const goUserFollowings = function(navigation, userId) {
  const { push } = navigation;
  push(PROFILE_FOLLOWINGS_STACK, {
    userId: userId
  });
};

1 Ответ

0 голосов
/ 20 октября 2018

Проблема была в том, что я использовал navigate() метод в моем goUserProfile(), а не push().После использования push() моя проблема решена.

Ссылка:

Реагирование Navigation V2: разница между navigation.push и navigation.navigate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...