Условно в нижней таблице - PullRequest
0 голосов
/ 07 мая 2019

Я начинаю с React Native, и у меня есть эта маленькая проблема прямо здесь. У меня есть bottomTabNavigator, если у пользователя есть разрешение, он переходит к ImageScreen, иначе он переходит к HomeScreen.

Моя функция global.hasPermission () проверяет разрешение и возвращает значение true или false, поэтому я хочу иметь возможность изменять {screen: ImageScreen} в зависимости от того, что возвращает функция. Как мне это сделать? Где я могу вызвать мою функцию hasPermission ()?

Вот моя вкладка Навигатор:

const BottomTab = createBottomTabNavigator({
    Image: {
        screen: ImageScreen,
        navigationOptions: {
            tabBarLabel: 'Image Screen',
            tabBarIcon: ({ tintColor, focused }) => (
                <Ionicons
                    name={'ios-camera'}
                    size={focused ? 30 : 26}
                    style={{ color: tintColor }}
                />
            ),
        },
    },
});

1 Ответ

1 голос
/ 07 мая 2019

В моем приложении я использую аутентификацию React Context API (https://reactjs.org/docs/context.html)

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

Как и в моем предыдущем ответе, вы можете проверить разрешение пользователя в ImageScreen '* componentDidMount () и, если у него нет разрешения, вы можете перенаправить его на домашний экран следующим образом (при условии, что ваш домашний экран содержится в Навигаторе стека):

// into your ImageScreen
componentDidMount () {
  const hasPermission = YourFunctionWhichReturnsTrueOrFalse()
  if (!hasPermission) this.props.navigation.navigate('home') // the title of your home screen here
}
...