いくつかのデータを含むプロジェクトを作成するアプリをいくつか書いています。フィールドの1はmembers
です。これはプロジェクトメンバー(配列内のオブジェクト)の配列です。プロジェクトの更新機能がありますが、プロジェクトのメンバーデータを更新する際に問題があります。私のサーバー側では、私はいつも古いデータを受け取ります。リアクション状態のオブジェクトを更新してデータベースに送信する
メソッドの魔法使いはメンバ配列の状態を更新します。それは、そのデータ
updateMember(data){
let objectIndex = this.state.members.filter((member,index) => {
if(data.id === member.id) return index;
return -1;
})
if(objectIndex !== -1){
let stateCopy = Object.assign({},this.state);
stateCopy.members[objectIndex] = data;
this.setState({
members: stateCopy.members
})
}
}
その後、私はデータがボタンをクリックするだけで提出やって
REST API
に問い合わせを行う、いくつかのアクションに状態データを送信しています(更新すべきメンバー)に必要なオブジェクトを検索し、更新します。 サーバーにデータを送信する前に、私が送信したデータについて確かめるために
console.log()
を実行しました。私は
を持っていますが、
request.body
の中にあるサーバーでは、メンバー配列から古いオブジェクトだけを受け取ります。なぜそれが起こるのか分かりません。たぶん私は何か間違っています...あなたの助けとアドバイスを探しています。
今うまく動作しますが、それはupdateMember関数自体であるか、別の –
'setState'は非同期です。 'setState'を呼び出すことはできず、少なくとも一つのイベントループティックを待たずにすぐに状態から読み込むことはできません。 –