2017-04-20 195 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