在本机上设置状态

时间:2017-04-20 18:44:21

标签: reactjs react-native

我开始学习反应本机,当我尝试设置状态并在设置后使用但看起来不起作用时,我看到一个错误。请帮帮我或告诉我它为什么不起作用。

这是我的代码:



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

谢谢!

1 个答案:

答案 0 :(得分: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从包含一个对象的数组更改为只有一个' normal'对象(删除括号)。如果您出于某种原因希望将其保留为数组,那么您将无法使用this.state.test.title访问该值,它必须是this.state.test[0].title。由于this.state.test的值为数组[{title: 'test'}],因此您需要访问数组中的第一项(使用[0]),然后获取{{1}的值对于数组中的那个项目。