@ReactDev

Как увеличить или уменьшить число во вложенном объекте в state?

Всем привет! Я новичок и у меня не получается изменить значение quantity для каждого id в state. Буду рад помощи, заранее спасибо!

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
    countId: [
             {id: 'id-1',  quantity: 1},  
             {id: 'id-2',  quantity: 5}
                ]
 }

IncrementItem = () => {
    this.setState(prevState => {
      if (prevState.countId.quantityId.forEach(i => i? i.quantity < 99999 : null) ) {
        return {
            ...prevState.countId,
            quantityId:{
              ...prevState.countId.quantityId,
              quantity: prevState.countId.quantityId.map(i => i.quantity + 1)
            }
        }
      } else {
        return null;
      }
    });
  }
  DecrementItem = () => {
    this.setState(prevState => {
      if (prevState.countId.quantityId.forEach(i => i.quantity > 1)) {
        return {
         ...prevState.countId,
          quantityId:{
            ...prevState.countId.quantityId,
            quantity: prevState.countId.quantityId.map(i => i.quantity - 1)
          }
      }
      } else {
        return null
      }
    });
  }
render(){
return (
<div>
  <button onClick={this.IncrementItem}>+</button>
  <button  onClick={this.DecrementItem}>-</button>
</div>
)
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Kostenitskiy_A
@Kostenitskiy_A
Попробуй так
const newArrayId = this.state.countId;
newArrayId.map((element) => { element.quantity + 1 });
this.setState({countId: newArrayId});

1 строка - создаёшь новый массив на основе объектов из this.state.countId
2 строка - перебираешь элементы нового массива и увеличиваешь quantity на 1
3 строка - меняешь своё состояние
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы