我知道已经有类似的问题,但没有代码共享。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