React Native - Passing Data Across Screens
Your problem isn't sending the parameter. You are sending it right and reading it right. Your error is related to that your id
is undefined.
You should fix your code like below,
for (var i = 0; i < data.length; i++) {
var name = data[i].name;
var id = data[i].id;
categoryComponents.push(
<Card key={id}>
<CardItem>
<Body>
<TouchableHighlight onPress={(event) => {
// onPress event fires with an event object
const { navigate } = this.props.navigation;
navigate('Category', { category: id });
}}>
<Text>{name + " " + id}</Text>
</TouchableHighlight>
</Body>
</CardItem>
</Card>
);
}
And you can read your parameter like below.
this.props.navigation.state.params.category