2017-04-20 119 views
1

我开始学母语的反应,我看到一个错误,当我尝试设置状态,并使用设置后,但似乎不工作。请帮助我或告诉我为什么它不起作用。上设置状态反应本土

这里是我的代码:

handlePressDetailsNews(navigator, dataRow){ 
 
    var ob = [{title: 'test'}] 
 
    this.setState({ test: ob}); 
 
    Alert.alert(
 
     'Test Alert', 
 
     'Title '+ this.state.test.title, 
 
    ) 
 
}

这里是屏幕后,我点击标题请参阅警报:https://www.screencast.com/t/rBkiNbgaTpzQ

谢谢!

回答

2

打电话给你Alert函数作为回调设置的状态,而不是仅仅把它设置状态后后。试试这个:

handlePressDetailsNews(navigator, dataRow){ 
    var ob = {title: 'test'} 
    this.setState({ test: ob},() => { 
     Alert.alert(
      'Test Alert', 
      'Title '+ this.state.test.title, 
     ) 
    }); 
} 

的主要问题是,之前的状态已完成更新,所以用回调,可以确保国家继续前被设置Alert.alert()被触发。

另外,请注意,我改变ob从包含一个目的是只是一个“正常”的对象的阵列(除去括号)。如果你想保持作为某种原因数组,那么你将无法访问该值与this.state.test.title,它就得在this.state.test[0].title。由于this.state.test值将数组[{title: 'test'}],你需要访问的第一个项目在数组中(与[0]),然后得到的title值的数组中的项目。

+0

这里是我的文件: –

+0

你能看到后anwser波纹管和帮助我吗? –

+0

对不起,您的代码存在其他问题,但是此答案对您描述的特定问题有效。我见过其他有setState/callback问题的人,你应该把这个答案标记为接受。 – skwidbreth