Изменение содержимого сегмента на Press - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть сегменты, и я хочу, чтобы они действовали как вкладки.Я попытался использовать react-navigation onPress каждого сегмента, но это выглядит не очень хорошо.

Я хочу, чтобы сегменты оставались фиксированными в верхней части и при нажатии на каждый из них содержимое должно измениться или вызвать определенный компонент без перезагрузки или уведомления об изменении экрана.

<Segment>
  <Button first>
    <Text>Puppies</Text>
   </Button>
   <Button>
    <Text>Kittens</Text>
    </Button>
    <Button last active>
      <Text>Cubs</Text>
    </Button>
</Segment>
<Content>
  <Text>Awesome segment</Text>
</Content>

1 Ответ

0 голосов
/ 18 сентября 2018

Сегменты могут быть настроены как react-navigation отдельный экран, разделенный на несколько компонентов, которые могут быть отображены по требованию.

Пример

(с использованием компонентов на основе базы)

state = {
    activePage:1,
}

selectComponent = (activePage) => () => this.setState({activePage})

_renderComponent = () => {
  if(this.state.activePage === 1)
    return <Component1/> //... Your Component 1 to display
  else 
    return <Component2/> //... Your Component 2 to display
}

render() {
  return ( 
    <Container>
      <Header>
       <Left />
       <Body>
         <Segment>
           <Button active={this.state.activePage === 1}
              onPress={this.selectComponent(1)}><Text>Component 1</Text></Button>
           <Button  active={this.state.activePage === 2}
              onPress= {this.selectComponent(2)}><Text>Component 2</Text></Button>
         </Segment>
        </Body>
        <Right/>
       </Header>
       <Content padder>
        {this._renderComponent()}
       </Content>
      </Container>
  )
}

Вы можете настроить его, чтобы добавить больше компонентов в зависимости от условий, указанных выше

Редактировать

Предполагается, что вы переходите к определенному экрану, который также содержит Segment, на кнопке какого-либо элементанажмите, что вы можете сделать

this.props.navigation.navigate('OtherSegmentScreen', {activePage: this.state.activePage})

И на этой странице получите props как

const {navigate} = this.props.navigation
const previousActiveSegment = navigate.getParams('activePage', '1') //... 1 is default value that you can set
...