Как установить начальную вкладку извне

Рассмотрим сцены ниже:

<Scene key='home' component={HomeComponent} hideNavBar title={'home'}/>
<Scene key="myTabBar" tabs={true} hideNavBar tabBarStyle={style.tabBarStyle}>
    <Scene 
        key="myTab" 
        title="My Tab" 
        icon={MyTabIcon} 
        component={MyTabComponent} hideNavBar />
    <Scene 
        key="myTab_1" 
        title="My Tab 1" 
        icon={MyTabIcon} 
        component={MyTabComponent1} hideNavBar />
</Scene>

У меня есть две кнопки в HomeComponent: Button1 и Button2.

Я хочу показать myTab_1 при нажатии Button1 и показать myTab_2 при нажатии Button2. Как я могу достичь этого?


person Armin Ghoreishi    schedule 07.03.2017    source источник
comment
Как вы можете дать более подробную информацию о?   -  person Yasemin çidem    schedule 07.03.2017


Ответы (1)


На самом деле это довольно просто, но нет документации или обсуждения проблемы. Чтобы оценить это, мы можем посмотреть на источник. код TabBar в каталоге src репо.

... (imports)

class TabBar extends Component {

  ...

  static onSelect(el) {
    if (!Actions[el.props.name]) {
      throw new Error(
        `No action is defined for name=${el.props.name} ` +
        `actions: ${JSON.stringify(Object.keys(Actions))}`);
    }
    if (typeof el.props.onPress === 'function') {
      el.props.onPress();
    } else {
      Actions[el.props.name]();
    }
  }
}

Когда мы нажимаем на саму вкладку, мы фактически вызываем функцию onSelect (взгляните на часть рендеринга), которая просто маршрутизирует, используя Action[tabbarbutton.props.name]()

Для вашего кода это Action.myTab_1() в вашем TouchableOpacity.

person eden    schedule 07.03.2017
comment
Извините за поздний ответ. Я пробовал это раньше, но это не работает. - person Armin Ghoreishi; 11.03.2017
comment
Тогда ваше дерево сцен должно быть неправильным. Можете ли вы отредактировать и показать мне свое дерево маршрутизаторов - person eden; 11.03.2017