Как в React отобразить компонент несколько раз, учитывая значение count в объекте?

Как можно реализовать возможность увеличения и уменьшения количества компонентов ингредиента при клике на изображение и кнопку, учитывая использование идентификатора в состоянии компонента?
  • 31 мая 2024 г. 4:41
Ответы на вопрос 2
Для отображения компонента несколько раз, учитывая значение count в объекте, можно использовать цикл или метод map для создания нескольких экземпляров компонента на основе значения count. Например:

```jsx
import React from 'react';

const Component = ({ count }) => {
  return (
    <div>
      {[...Array(count)].map((_, index) => (
        <div key={index}>
          {/* Ваш компонент здесь */}
        </div>
      ))}
    </div>
  );
};

export default Component;
```

Для реализации возможности увеличения и уменьшения количества компонентов ингредиента при клике на изображение и кнопку, учитывая использование идентификатора в состоянии компонента, можно создать компонент ингредиента, который содержит внутреннее состояние для отслеживания количества.

```jsx
import React, { useState } from 'react';

const Ingredient = ({ id, name }) => {
  const [count, setCount] = useState(1);

  const increaseCount = () => {
    setCount(count + 1);
  };

  const decreaseCount = () => {
    if (count > 1) {
      setCount(count - 1);
    }
  };

  return (
    <div>
      <h3>{name}</h3>
      <img src={`https://example.com/${id}.jpg`} alt={name} />
      <button onClick={decreaseCount}>-</button>
      {count}
      <button onClick={increaseCount}>+</button>
    </div>
  );
};

export default Ingredient;
```

Теперь вы можете включить компонент ингредиента в вашу основную компоновку и каждый раз управлять количеством с помощью кнопок «+» и «-».
return new Array(ingredient.count).fill(null).map((_, index) => <Meat key={index} />);

Создаём массив нужной длины, заполням его чем угодно (это обязательно, иначе работать не будет) и итерируем по нему как обычно в Реакте.
Как правило индекс массива лучше не использовать в качестве ключа, но поскольку здесь компоненты взаимозаменяемые (раз не принимают пропсы), то от индекса вреда не будет.
Похожие вопросы