2017-04-20 20 views
1

私は状態を設定しようとすると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を、1つのオブジェクトを含む配列から「通常の」オブジェクト(括弧を削除したもの)に変更したことに注目してください。何らかの理由でそれを配列として保持したい場合は、this.state.test.titleでその値にアクセスすることはできません。それはthis.state.test[0].titleでなければなりません。 this.state.testの値は配列[{title: 'test'}]なので、配列の最初の項目([0])にアクセスしてから、その項目の値をtitleにする必要があります。

+0

私のファイルは次のとおりです。 –

+0

ポストアンサーが怒っていて助けてくれますか? –

+0

あなたのコードには他の問題がありましたが、この回答はあなたが記述した特定の問題に対して有効です。私はsetState/callbackの問題を持つ他の人を見てきました。 – skwidbreth

関連する問題