I have a component like this:
... imports
class ChooseGenres extends Component {
constructor(props) {
super(props);
this.setState({
event: { ... , genres: [] },
genres: [{...}, {...}, {...}]
});
}
eventHasGenre(item, genre_id) {
return item.genres.indexOf(genre_id) > -1 ? true : false;
}
onGenreChange(genre_id) {
let event = this.state.event;
if (this.eventHasGenre(event, genre_id)) {
event.genres.splice(indexOf, 1)
} else {
event.genres.push(genre_id);
}
this.setState({
event: event
});
}
render() {
return (
<Container>
<Content>
<List dataArray={this.state.genres}
renderRow={(item) =>
<ListItem onPress={this.onGenreChange.bind(this, item.id)}>
<Body>
<Text>{item.name}</Text>
</Body>
{this.eventHasGenre(this.state.event, item.id) &&
<Right>
<Icon active name="arrow-forward" />
</Right>
}
</ListItem>
}>
</List>
</Content>
</Container>
}
ChooseGenres.propTypes = {
isLoggedIn: PropTypes.bool.isRequired,
}
const mapStateToProps = (state) => {
return {
isLoggedIn: state.isLoggedIn
};
};
const mapDispatchToProps = (dispatch) => ({
startup: () => dispatch(StartupActions.startup())
});
export default connect(mapStateToProps, mapDispatchToProps)(ChooseGenres);
When I click on ListItem I add the genre to the event.genres array, and I want the Icon to be shown.
But even if the event object in the state is updated correctly (I log it in the console), the Icon is still not shown.
The strange behaviour I noticed is if I back in the navigation and I came back to this Component, the Icons are shown correctly.