@evg_96

Как сделать сетку по 4 элемента в строке?

Есть каталог товаров. Массив товаров получается из стора. Нужно вывести это все в сетку по 4 элемента в строке и чтобы все было по центру и чтобы каждая карточка была одинаковой ширины. Как это сделать имея просто массив товаров? Не понятно как перебирая массив делать строки (className="row").

Сейчас сделал так:

<div className="container">
  <div className="row">
    {
      this.props.catalog.map(product => (
        <Card
          className="col"
          key={product.uid}
          name={product.name}
          price={product.price}
          imageUrl={product.imageUrl}
          weight={product.weight}
          diameter={product.diameter}
        />
      ))
    }
  </div>
</div>

На большом экране смотрится более менее нормально.
5a92811492bbb656111499.png

Но опять же не строго по 4 элемента.

А при уменьшении размера экрана все ломается.
5a92822d0e94c095975174.png
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Нужно вывести это все в сетку по 4 элемента в строке <...> Не понятно как перебирая массив делать строки

Очевидно же - порезать массив на куски по 4 элемента, каждый будет представлять собой строку:

const { items } = this.state;
const inRow = 4;
const rows = Array.from(
  { length: Math.ceil(items.length / 4) },
  (n, i) => items.slice(i * 4, (i + 1) * 4)
);

И вместо исходного массива при рендеринге перебираете полученные куски:

{rows.map(n => (
  <div className="row">
    {n.map(m => <div>{m}</div>)}
  </div>
))}

https://jsfiddle.net/cmd7fyn3/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект