Как выбрать условный экран createStackNavigator? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь выбрать условный экран на основе данных Redux. У меня есть два экрана в стеке экранов, и этот стек также является частью TabNavigator (экран выхода из системы должен отображаться также с вкладками). Если пользователь вошел в систему, мне нужно показать CheckScreen , в противном случае CheckScreenLoggedOut . Я попытался установить initialRouteName условно, но он показывает CheckScreenLoggedOut только после входа в систему.

Как мне реализовать эту логику?

Вот моя createStackNavigator часть:

const CheckScreenStack = createStackNavigator(
    {

        CheckSendLoggedOut: {
            screen: IntroScreen,
            navigationOptions: ({navigation}) => ({
                headerLeft: (
                    <View>
                        <TestModeIcon/>
                    </View>
                ),
            }),

        },

        CheckScreen: {
            screen: CheckScreen,
            navigationOptions: ({navigation}) => ({
                headerRight: (
                    <View>
                        <TouchableOpacity title='' onPress={() => { navigation.navigate('NotificationsScreen'); }}>
                            <NotificationTabBarIcon/>
                        </TouchableOpacity>
                    </View>
                )
            }),
        },



    },
    {
        initialRouteName: (typeof store.getState().userData !== "undefined") ? 'CheckScreen' : 'CheckSendLoggedOut'
    }
);

1 Ответ

0 голосов
/ 26 октября 2019

Я уже достиг этого, получив доступ к избыточному состоянию с помощью connect, вы можете сделать что-то вроде этого:

const CheckScreenStack = ({ userData }) => {
   const Stack = createStackNavigator(
     {
       ...
     },
     {
        initialRouteName: (typeof userData !== "undefined") ? 'CheckScreen' : 'CheckSendLoggedOut'
     }
   );
   return Stack;
}

const mapStateToProps = ({ userData }) => {
  return { userData };
};

export default connect(
  mapStateToProps,
  {},
)(CheckScreenStack);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...