2017-09-27 10 views
1

の配列を持つ状態私はこのような状態を持っている:Reduxの更新オブジェクト

this.state ={ 
    photos: [ 
    { description: 'someDescription', id: 1 }, 
    { description: 'someDescription', id: 2 }, 
    { description: 'someDescription', id: 3 } 
    ] 
} 

どのように私は記述のみのいずれかを更新することができますか? それともあなたはこのようにあなたのためにそれを行うには目的球を作成することができます

this.setState({ photos: newArrayOfObjectsWithOnlyOneUpdatedDescription }) 

答えて

1

ような何かをする必要があります:あなたがする必要はありませんので、

const updatePhoto = (id, desc) => 
    this.state.photos.map((obj) => 
    obj.id === id ? Object.assign(obj, { description: desc }) : obj) 

map機能は、新しい配列を返します。手動で状態をクローニングする。

this.setState({ photos: updatePhoto(2, 'new desc') }) 
0

あなたは状態のコピーを作成することができ、その後、コピーされた更新状態とSETSTATE

let stateCopy = Object.assign({}, this.state); // get the current state copy 
stateCopy.photos = stateCopy.photos.slice(); // get photos object 
stateCopy.photos[key] = Object.assign({}, stateCopy.photos[key]); 
stateCopy.photos[key].description = 'new decription'; // update description of specific key 
this.setState(stateCopy); // set state 

次に、あなたがそれを必要として、それを再利用します

関連する問題