2017-09-27 88 views
1

數組的狀態我有這樣的狀態:終極版更新與對象

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

如何更新僅描述一個? 或者我必須做一些像

this.setState({ photos: newArrayOfObjectsWithOnlyOneUpdatedDescription }) 

回答

1

您可以創建一個funtion這樣做對你是這樣的:

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