So che c'è già una domanda simile ma non c'è codice condiviso lì.react-native this.setState non funziona
Sotto navbarChanged()
> se condizione, sto facendo uno this.setState
. Questo è di tipo HomeTab
ma l'setState
non sembra funzionare.
Eventuali indizi/indicazioni?
class HomeTab extends React.Component {
constructor() {
super()
this.setState({
isNavBarHidden: false
});
}
updatePosition(lastPosition) {
}
navbarChanged() {
console.log("received navbar changed event", AppStore.navbarVisible());
if (AppStore.navbarVisible()) {
StatusBarIOS.setHidden(false)
this.setState({ isNavBarHidden: false})
// this.state.isNavbarHidden is still true here
this.render();
}
else {
StatusBarIOS.setHidden(true);
this.setState({ isNavBarHidden: true});
this.render();
}
}
componentDidMount() {
AppStore.addNavbarChangeListener(this.navbarChanged.bind(this));
}
componentWillMount() {
StatusBarIOS.setHidden(false)
this.setState({ isNavBarHidden: false });
}
}
Ed ecco il mio codice render():
render() {
return (
<NavigatorIOS style={styles.container}
navigationBarHidden={this.state.isNavBarHidden}
ref="navigator"
initialRoute={{
title: 'Foo',
component: HomeScreen,
passProps: { parent: this }
}}
/>
)
}
Grazie mille per la risposta. 'setState' è asincrono risponde a questa domanda. Ho aggiornato il mio codice con il mio metodo render(). Mi libererò di render(); quello che hai suggerito ha senso Sono ancora confuso però perché la mia barra di navigazione non viene mostrata (ma la barra del titolo è). – Abdo
WOW grazie - non avevo idea nemmeno di leggere più e più volte i documenti che setState è asincrono - LONTANO DA ESSO molti tuts online dicono che l'interfaccia grafica renderà dopo aver chiamato questo - non immediatamente e la tua risposta mi ha aiutato in maniera massiccia. Grazie – landed