Как убрать ререндер дочерних компонентов?

Столкнулся с проблемой ререндера дочерних компонентов. Суть в том, что в родительском компоненте объявляю обработчик, который должен будет отрабатывать при нажатии на кнопку. Сам обработчик, обновляет несколько стейтов, один из которых является массивом объектов. Его прокидываю через пропсы в дочерние.

В итоге, вроде как понимаю, что обработчик нужно мемоизировать с использованием useCallback, потому что из-за него каждый раз ререндерятся компоненты, но никак не могу получить желаемый результат. Может стоит вынести этот обработчик куда-нибудь или наоборот объявить отдельно в каждом компоненте.

Родильский компонент:

const ItemList = ({ userBalance, setUserBalance }) => {
  const [items, setItems] = useState(products);

  const onBuyItem = (product) => {
    setUserBalance((prev) => prev - product.price);
    const updatedItems = items.map((item) => {
      if (item.id === product.id) {
        return { ...item, count: item.count - 1 };
      }
      return item;
    });
    setItems(updatedItems);
  };

  return (
    <div className="item-list">
      {items.map((item) => (
        <ItemCard
          key={item.id}
          item={item}
          isCanBuy={userBalance >= item.price && item.count}
          onBuyItem={onBuyItem}
        />
      ))}
    </div>
  );
};

Дочерний:

const ItemCard = React.memo(({ item, isCanBuy, onBuyItem }) => {

  return (
    <div className="item-card">
      <span className="item-card-title">{item.title}</span>
      <span className="item-card-count">
        {item.count ? `IN STOCK: ${item.count}` : "SOLD OUT"}
      </span>
      <img
        className="item-card-img"
        src={"./img/" + item.imgUrl}
        alt={item.imgAlt}
      />
      <span className="item-card-price">{item.price}₽</span>
      <button
        className="item-card-button"
        disabled={!isCanBuy}
        onClick={() => onBuyItem(item)}
      />
    </div>
  );
});

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