Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
componentDidMount affects other component

I have a price counter component. When I try to decrease a product qty to 0 it is deleted successfully but it affects the following product's qty and gives it 0, not its actual qty.

// Component
handleIncrement = () => {
  this.setState({ qty: this.state.qty + 1 });
};

handleDecrement = () => {
  this.setState({ qty: this.state.qty - 1 });
};

componentDidUpdate(prevProps, prevState) {
  const { cartId, getQty, updateQty } = this.props;
  const { qty } = this.state;

  if (prevState.qty !== qty) {
    if (getQty) getQty(qty); // Parent CB
    if (this.props.qty) updateQty({ cartId, qty });
  }
}

// Action
export const updateQty = (item) => (dispatch, getState) => {
  dispatch({ type: CART_UPDATE_QTY, payload: item });
};

// Reducer
case CART_UPDATE_QTY:
  const { cartId, qty } = action.payload;

  // In case of qty = 0 => delete item & return new cart
  if (qty <= 0) {
    const newCart = cart.filter((p) => p.cartId !== cartId);
    localStorage.setItem("cart", JSON.stringify(newCart));
    return newCart;
  }

  // Update Qty
  const item = cart.find((p) => p.cartId === cartId);
  item.qty = qty;
  const filteredCart = cart.filter((p) => p.cartId !== cartId);
  const updatedCart = [...filteredCart, item];
  localStorage.setItem("cart", JSON.stringify(updatedCart));
  return updatedCart;
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda