如何使用setState

时间:2018-04-26 18:06:20

标签: reactjs

我正在尝试使用setState来更新状态的子对象的一个​​属性。这样做的正确方法是什么?我想访问状态并定义我想要更新的部分,而不是使用新状态更新整个状态。希望有意义......

class BooksApp extends React.Component {
  state = {
    books: []
  }

componentDidMount() {
  BooksAPI.getAll().then((books) => {
    this.setState({books})
  })
}
selectStateUpdate = (book,shelf) => {
  this.updateShelf(book, shelf);

}
updateShelf = (book, shelf) => {
  BooksAPI.update(book, shelf)
  .then(() => {
    for (var i=0; this.state.length < i; i++) {
      if (this.state.title === book.title) {
        this.setState({
          books[i].shelf: book.shelf
        })
      }
    }
  })
}

1 个答案:

答案 0 :(得分:1)

尝试将状态更改部分更改为:

this.setState({
  books: this.state.books.map((item, index) => 
    index === i ? {...item, shelf: book.shelf} : item
  )
})