setState работает только с первым элементом, полученным из API. - PullRequest
0 голосов
/ 20 октября 2018

Итак, здесь я сопоставляю пункты, которые я получаю от API

{this.state.items.map(i => <Item key={i.id} expired={this.state.expired} id={i.id} img={i.img} selected={this.state.selected} name={i.name} price={i.price} getItems={this.getItems} getSelected={this.getSelected} quantity={i.quantity} />)}

Когда я выбираю элемент, появляется всплывающее сообщение, чтобы подтвердить выбор или отменить его, когда я нажимаю кнопку Отмена, яследует запустить функцию отмены, в которой я повторно отображаю исходное состояние элемента

cancel = () =>{
      const initial = {
      selected: false,
      quantities: [],
      select: "SELECT"
    }
    this.setState(initial);         
}

Но эта функция работает только для первого элемента на странице, даже когда я щелкаю первый элемент и подтверждаю выбор, а затемвыберите другой элемент и отмените выбор, выбор просто отменяется с первого элемента, а не элемента, который я выбрал на первом месте.Я изо всех сил старался объяснить мою проблему, пожалуйста, дайте мне знать, если вам нужно больше разъяснений.

функция для обработчика кликов

select = () => {
      let qua = 1;
      let total = qua * this.props.price;
      this.props.getSelected(true);
      const newQuantity = {name: this.props.name, quantity: parseInt(qua), total: total}
      const quantities = [...this.state.quantities];
      quantities.push(newQuantity);
      this.setState(previousState => ({
        quantities : [...previousState.quantities, newQuantity]
      }));
      this.setState({quantity: qua, selected: true, select: "SELECTED", quantityMain: quantities, returnReason: "", returnReasonMore: "", moreInformation: ""}, ()=>{
        console.log(this.state.quantityMain);
      })
}
...