как использовать панель вкладок в навигаторе в react-native

У меня сейчас проблемы с этой проблемой.

Поскольку есть некоторые экраны, на которых не используется панель вкладок, а также мне нужно использовать векторный значок на панели навигации, вместо использования response-native-tabbar-navigator, я попытался использовать панель вкладок в навигаторе, как показано ниже.

render() {
  return (
      <Navigator
        initialRoute={{name: 'LearningList', index: 0}}
        renderScene={(route, navigator) =>
          {
            if (route.name == 'LearningList') {
              return (
                <LearningList navigator={navigator} />
              );
            }
            if (route.name == 'MyLearning') {
              return (
                <View style={{ flex: 1, }}>
                  <MyLearning navigator={navigator} />
                  <TabBarIOS
                    tintColor="black"
                    barTintColor="#3abeff">
                    <Ionicon.TabBarItemIOS
                      style={ styles.tabBarItem }
                      selected={false}
                      iconName='ios-search'
                      title='Explorer'
                      navigator={navigator}
                      onPress={ this.changeTabSelection('LearningList') }>
                      <View></View>
                    </Ionicon.TabBarItemIOS>
                    <Ionicon.TabBarItemIOS
                      style={{ backgroundColor: 'green' }}
                      selected={true}
                      iconName='ios-list-outline'
                      title='My Learning'
                      navigator={navigator}
                      onPress = { this.changeTabSelection('MyLearning') }>
                      <View></View>
                    </Ionicon.TabBarItemIOS>
                  </TabBarIOS>
                </View>
              );
            }
            if (route.name == 'Schedule') {
              return (
                <Schedule navigator={navigator} learningID={ route.learningID } />
              );
            }            
          }
        }
      />
  );
}

Но когда я нажимаю кнопки TabBarItemIOS, событие onPress вообще не вызывается, а если я нажимаю кнопку редактирования на странице LearningList, обратные вызовы onPress вызываются для всех кнопок TabBarItemIOS.

Вот содержимое следующей кнопки LearningList.js.

const rightButtonConfig = {
   title: 'Next >',
   handler: () => {
    this.props.navigator.push({
     name: 'MyLearning'
    });
   }
  };

Итак, я надеюсь узнать, как правильно использовать панель вкладок в навигаторе.

Помогите, пожалуйста!!!


person Samuel Jansson    schedule 18.06.2016    source источник
comment
Вы отправляете ссылку на навигатор вкладок в реагирующем родном Android ??? Мне это нужно, я пытаюсь создать навигатор вкладок, но не могу, если у вас есть, тогда скажите mw   -  person hammad    schedule 19.04.2017


Ответы (1)


Это потому, что вы вызываете эту функцию вместо передачи ссылки на функцию. Чтобы делать то, что вы хотите, вам просто нужны стрелочные функции. Например, замените:

onPress={ this.changeTabSelection('LearningList') }>

to

onPress={ () => this.changeTabSelection('LearningList') }>
person Jeremy Colin    schedule 18.06.2016
comment
Сэр, я хочу создать навигатор вкладок в реагировании на родной Android сэр, пожалуйста, дайте код для этого, если у вас есть - person hammad; 19.04.2017