我知道已經有類似的問題,但沒有代碼共享。react-native this.setState not working
根據navbarChanged()
>如果條件,我正在做一個this.setState
。這是HomeTab
類型,但setState
似乎沒有工作。
任何線索/指針?
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 });
}
}
這是我的渲染()代碼:
render() {
return (
<NavigatorIOS style={styles.container}
navigationBarHidden={this.state.isNavBarHidden}
ref="navigator"
initialRoute={{
title: 'Foo',
component: HomeScreen,
passProps: { parent: this }
}}
/>
)
}
非常感謝您的回答。異步的'setState'回答了這個問題。我用我的渲染方法()更新了我的代碼。我將擺脫render();你的建議是有道理的。儘管爲什麼我的導航欄不顯示(但標題欄是),我仍然感到困惑。 – Abdo
WOW謝謝 - 我不知道甚至一遍又一遍地閱讀setState是異步的文檔 - 很多在線內容都表示在調用這個UI之後UI會呈現出來 - 它不會立即顯示出來,而且您的回答大量幫助我。謝謝 – landed