Почему 1 элемент Stat'а пустой?

есть такой код

const [item, setItem] = useState({
    id: null, name: "", price: "", weight: ""
  })
  const [cart, setCart] = useState([])


  const addToCart = (id, name, price, weight) => {
    setItem({item, id:id, name:name, price:price, weight:weight})
    setCart(cart => [...cart, item])
  }

При клике на товар добавляю его в cart, а сам cart методом map вывожу в боковой панели. Есть проблема что при нажатии на продукт в cart 1 элементов встает item с Default значениями что я задал для InitialState item


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

Автор решения: Евгений Платов

после вызова setItem item обновится асинхронно (после завершения всех синхронных функций), поэтому в setCard улетает старое значение (Использование функции не поможет). Надо так делать.

  const addToCart = (id, name, price, weight) => {
    const itm = {id, name, price, weight};
    setItem(itm);
    setCart([...cart, itm]);
  }
→ Ссылка