2017-09-27 65 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