Как дождаться изменения state и запушить его в localstorage?

Проблема в том что в функции buyItem в localStorage сначала пушится пустой объект из state, а потом только меняется state и при втором клике уже пушится измененный state. Как дождаться изменения в state а потом использовать его значения?

export class Cat extends React.Component {
  state = {
    catsImg: imgArr,
    click: false,
    catPrice: 0,
    currentImg: '',
    selectedItem: {}
  }
  buyItem = (price) => {
    this.setState({
      catPrice: price,
    })
    this.renderInfo(price)
    localStorage.setItem(this.state.catPrice, JSON.stringify(this.state.selectedItem))
  }
render() {
    const { catsImg, click, currentImg, selectedItem } = this.state
    const { cats } = this.props
 
    return(
      <ul className="catsList">
        {cats.map((cat, index )=> (
          <li key={index} className='catsItem'>
            <img src={catsImg[index % catsImg.length]} alt=""/>
            <div><b>description:</b> {cat.description}</div>
            <div><b>type</b> type:{cat.type}</div>
            <div><b>Cost</b> Cost:{cat.total}</div>
            <button 
              onClick={() => 
                this.buyItem(cat.total)}>
              Buy
            </button>
          </li>
        ))}

Ответы (1 шт):

Автор решения: drotsyk
buyItem = (price) => {
    this.setState(({catPrice}) => ({
      catPrice: catPrice = price,
    }),this.filterItem)
  }

  filterItem = () => {
    const visible = this.props.cats.filter(cat => 
      this.state.catPrice === cat.total)
      this.setState(({selectedItem})=>({
        selectedItem: selectedItem = visible
      }),this.pushLocal) 
  }

  pushLocal = () => {
    localStorage.setItem(this.state.catPrice, JSON.stringify(this.state.selectedItem))
  }
→ Ссылка