我开始学习反应本机,当我尝试设置状态并在设置后使用但看起来不起作用时,我看到一个错误。请帮帮我或告诉我它为什么不起作用。
这是我的代码:
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
谢谢!
答案 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}的值对于数组中的那个项目。