2017-06-03 7 views
1

データ入力Webアプリケーションを実行するために、反応と基本フラックスを使用しています。 私はストアと通信するルートコンポーネントを持っており、thisのような複雑なデータオブジェクトを取得します。React - setState()リーフレベルの属性を更新しません。

オプション選択要素の変更で、私は上記と同様の構造を持つ別の関連オブジェクトをもたらすアクションを起動します。

私はこの大量オブジェクトを自分のデータ入力ページのルート状態として管理し、データをさまざまなコンポーネントに渡して小道具として渡します。

このオブジェクトのリーフレベルは、私はInput要素にバインドしました。オブジェクトが変わると変化します。これらの変更はすべて、ルートコンポーネントでの次の状態変更から少しずつ下がっています。

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

私の場合、リーフレベルの値は状態の変化に対応して変化しません。しかし、次のように追加すると、それが適切に機能し始め、それに応じてリーフレベルの値が変更されます。

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : {} 
     }); 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

なぜこれが起こるのですか?

+0

あなたの 'measurements'を空のオブジェクトまたは空の文字列として初期化しましたか? –

+0

空のオブジェクトとして! – jdc91

+0

これを試してくださいthis.setState({ 測定値:{... measurements} }); – Panther

答えて

1

私は再利用可能な "カスタム"入力で状態を維持していたので、子要素がそれ自身の状態に基づいていたので、変更は期待どおりには流れませんでした。

削除状態とその "小道具"最後まで!

教訓!常にあなたの状態を持ち上げよう!

関連する問題