Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: React, reusable component, table, columns configuration, render props

Как организовать переиспользуемый компонент таблицы с поддержкой разных наборов колонок?

Вопрос проверяет умение создавать гибкие и переиспользуемые компоненты таблицы с настраиваемыми колонками в React.

Короткий ответ

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

Длинный ответ

Концепция переиспользуемого компонента таблицы

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

Как это работает

Компонент Table получает два основных пропса: data (массив объектов) и columns (массив объектов с описанием каждой колонки). Каждый объект колонки содержит как минимум header (заголовок) и render (функцию, которая возвращает JSX для ячейки). Функция render получает текущий элемент данных и может отображать любое содержимое.

Пример реализации

const Table = ({ data, columns }) => {
  return (
    <table>
      <thead>
        <tr>
          {columns.map(col => (
            <th key={col.key}>{col.header}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {data.map((row, index) => (
          <tr key={index}>
            {columns.map(col => (
              <td key={col.key}>{col.render(row)}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
};

// Использование
const columns = [
  { key: 'name', header: 'Имя', render: (row) => row.name },
  { key: 'age', header: 'Возраст', render: (row) => row.age },
  { key: 'action', header: 'Действие', render: (row) => <button>Удалить</button> },
];

<Table data={users} columns={columns} />

Дополнительные возможности

  • Сортировка: можно добавить пропс onSort и состояние сортировки.
  • Фильтрация: передать функцию фильтрации или компоненты фильтров в конфигурацию колонки.
  • Кастомизация стилей: через пропс className или стили для отдельных колонок.

Вывод

Такой подход позволяет легко адаптировать таблицу под разные задачи без переписывания логики. Он особенно полезен в крупных проектах, где много экранов с таблицами, и помогает соблюдать принцип DRY (Don't Repeat Yourself).

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • React

    React

Ключевые слова

#React

#reusable component

#table

#columns configuration

#render props

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию