How to add onPress events on Cards (on native base)?

Viewed 6407

I'm trying to make those cards clickable to redirect to another screen, but I cant figure it out

 let cards = this.state.items.map(item => (
            <Card key={item.id} onPress={() => Actions.dogScreen()}> 
                <CardItem bordered>
                    <Left>
                        <Thumbnail square source={item.image ? { uri: "data:image/jpeg;base64," + item.image } : logo} />
                        <Body>
                            <Text>Name: {item.name}, Age: {item.age}</Text>
                            <Text note>Gender: {item.gender.name} Race: {item.race.name}</Text>
                        </Body>
                    </Left>
                </CardItem>
            </Card>))
1 Answers

You can make <Card /> clickable by wrapping the whole card by TouchableOpacity. Also don't forget to add pointerEvents="none" for each card.

import { TouchableOpacity } from 'react-native';

let cards = this.state.items.map(item => (
     <TouchableOpacity key={item.id} onPress={() => Actions.dogScreen()}>         

          <Card pointerEvents="none"> 
                <CardItem bordered>
                    <Left>
                        <Thumbnail square source={item.image ? { uri: "data:image/jpeg;base64," + item.image } : logo} />
                        <Body>
                            <Text>Name: {item.name}, Age: {item.age}</Text>
                            <Text note>Gender: {item.gender.name} Race: {item.race.name}</Text>
                        </Body>
                    </Left>
                </CardItem>
            </Card>

       </TouchableOpacity>
))
Related