I am using react-native-vactor-icons to draw rating stars and I am pushing each star in array and then display this array in render but only one star is being displayed.My code is
getStarsFromRating = (rating) => {
let stars = []
for(let i = 1; i<=5; i++) {
let result = rating - i
if(result >= 0){
stars.push(<Icon name='md-star' size={20} style={[{top: 15, right: 15, position: 'absolute', backgroundColor: 'transparent'}]} key={i} color="#f57365" />)
} else if(result < 0 && result > -1) {
stars.push(<Icon name='md-star-half' size={20} style={[{top: 15, right: 15, position: 'absolute', backgroundColor: 'transparent'}]} key={i} color="#f57365" />)
} else {
stars.push(<Icon name='md-star-outline' size={20} style={[{top: 15, right: 15, position: 'absolute', backgroundColor: 'transparent'}]} key={i} color="#f57365" />)
}
}
return stars
}
And in render function I am calling it like this
<View style={styles.rowBottomInternal}>
<Text style={styles.restaurantName}>{item.get('name')}</Text>
{getStarsFromRating(item.get('rating'))}
</View>
And my styles are:
rowBottomInternal: {flex: 1, flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center'},
restaurantName: { color: '#525257', fontSize: 24, fontFamily: 'MyriadPro-Regular' }
And I am getting something like this:
How can I display 5 stars here or am I doing something wrong here?
It may be due to all of them having the position set to absolute. Can you see that all five components are loaded in the react devtools?