Проблема проста: у вас есть массив breakfast
в качестве зависимости от useEffect
, а в useEffect
вы сами устанавливаете массив завтраков. Теперь, так как массив const завтрак объявлен внутри компонента, новая ссылка на него генерируется каждый раз, и так как useEffect устанавливает массив в состояние, он перерисовывает и при следующей перерисовке сравнение для массива breakfast
завершается неудачно, так как ссылка изменился
Решение простое, вам не нужно иметь массив const в компоненте, а также вам не нужно использовать useEffect
const breakfast = [
{
id: 0,
name: "Sandwich de jamón y queso",
price: '35',
img: "https://i.ibb.co/ynC9xHZ/sandjc.png",
},
{
id: 1,
name: "Jugo Natural",
price: '15',
img: "https://i.ibb.co/8mrd4MK/orangejuice.png",
},
{
id: 2,
name: "Café americano",
price: '20',
img: "https://i.ibb.co/nsj1GL0/americancoffe.png",
},
{
id: 3,
name: "Café con leche",
price: '28',
img: "https://i.ibb.co/GRPBm7j/coffeandmilk.png",
}
];
const BreakfastComponent = () => {
const [stateProduct, setStateProduct] = useState(breakfast);
return (
<section className="databreakfast">
{stateProduct.map((element, item) =>
<ButtonsBComponent
key={item}
{...element}
/>
)}
</section>
)
};
export default BreakfastComponent;