如何从ReactNative的卡片列表中选择特定的卡片

时间:2018-11-12 07:20:50

标签: react-native react-native-android

我有一组来自React Native基础库的卡片。我想从中选择一张独特的卡片。我没有找到类似html的“ id”之类的卡片属性。

Home.js

 return (
      <Container>
        <Header>
          <Body>
            <Title>Scanner</Title>
          </Body>
          <Right />
        </Header>
         <Content style= {{backgroundColor: '#cdc9c9'}}>
          <Card style= 
            {{width:100,height:100,backgroundColor:this.state.bgclr }} >
            <CardItem bordered>
              <Body>
                <Text>
                    Slot: 1A
                </Text>
              </Body>
            </CardItem>
            </Card>
            <Card style={{width:100,height:100}} >
            <CardItem bordered>
              <Body>
                <Text>
                    Slot: 1B
                </Text>
              </Body>
            </CardItem>
            </Card>
            <Card style={{width:100,height:100}}>
            <CardItem bordered>
              <Body>
                <Text>
                    Slot: 1C
                </Text>
              </Body>
            </CardItem>
            </Card>
            </Content> 
           <Button block success onPress={
             () => Alert.alert(this.setState({
             bgclr: 'green'}))}>
          <Text>Simulate Scan</Text>
          </Button>
          <Footer/>
      </Container>
    );
  }
}

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

一种方法是将卡片以阵列形式存储,然后在渲染器上对其进行引用。

var cards = [
    <Card style= 
        {{width:100,height:100,backgroundColor:this.state.bgclr }} >
        <CardItem bordered>
          <Body>
            <Text>
                Slot: 1A
            </Text>
          </Body>
        </CardItem>
    </Card>,
    <Card style={{width:100,height:100}} >
        <CardItem bordered>
          <Body>
            <Text>
                Slot: 1B
            </Text>
          </Body>
        </CardItem>
    </Card>,
    <Card style={{width:100,height:100}}>
        <CardItem bordered>
          <Body>
            <Text>
                Slot: 1C
            </Text>
          </Body>
        </CardItem>
    </Card>
]

您可以在返回方法中引用它,方法是使用{cards}代替初始的Card元素(或{this.cards}{this.props.cards},具体取决于您正在存储cards变量)

return (
  <Container>
    <Header>
      <Body>
        <Title>Scanner</Title>
      </Body>
      <Right />
    </Header>
    <Content style= {{backgroundColor: '#cdc9c9'}}>
      {cards}
    </Content> 
    <Button block success onPress={
         () => Alert.alert(this.setState({
         bgclr: 'green'}))}>
      <Text>Simulate Scan</Text>
    </Button>
    <Footer/>
  </Container>
);