Почему мой код добавляет элемент в массив при следующем щелчке по React-javascript

Какое-то время я учусь и тренируюсь реагировать. Но возникла странная проблема. Я делаю небольшое приложение для электронной коммерции (шаг за шагом с учебником).

const addToCart = (id) => {
      
       let tempProduct = storeProduct;
       const index = tempProduct.indexOf(getItem(id));
       const product = tempProduct[index];
       product.inCart=true;
       product.count = 1;
       product.total = product.price;
       setCart([...cart,product]);
       setStoreProduct(tempProduct);
       console.log(cart)
   
  };

storeProduct — это массив объектов, которые являются продуктами в моем приложении.

Вызывается этой функцией при нажатии на кнопку. Он берет элемент по идентификатору и вносит некоторые изменения в данные. Затем следует добавить этот элемент в корзину, который представляет собой массив. Но при первом нажатии корзина пуста. При втором щелчке элемент попадает в корзину и т. Д. В чем проблема?

Я предполагаю, что боты setCart и setStoreProduct происходят из React.useState (). Так что проверьте связанный вопрос SO   —  person Talha    schedule 26.04.2021

Ссылка @Borjante вам поможет. Кстати, вы можете зарегистрировать новые данные корзины с помощью React.useEffect (() = ›console.log (cart), [cart]).   —  person Talha    schedule 26.04.2021

setStoreProduct, возможно, ничего не делает, потому что вы устанавливаете то же значение.   —  person Talha    schedule 26.04.2021

@Kornflexx показывает фактическую корзину от useEffect. Но почему?   —  person Talha    schedule 26.04.2021

См. также:  Python - запрос к базе данных и объединение данных без создания новой таблицы
Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: