Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: drag, drop

Как реализовать вложенный drag-and-drop в React-приложении?

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

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

Вложенный drag-and-drop строится вокруг иерархии данных, а не DOM. При перетаскивании меняется структура данных, а UI лишь отражает эти изменения. Для реализации используют библиотеки или собственную логику с расчётом целевых позиций. Ключевая сложность — корректно обновлять вложенные узлы.

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

Drag-and-drop в React — это всегда работа с состоянием, а не с прямыми DOM-манипуляциями.

Ключевая идея

Перетаскивается не элемент интерфейса, а:

  • идентификатор узла

  • его позиция в дереве

UI — это проекция структуры данных.

Основные шаги реализации

  1. Представление данных

    • дерево с id и children

    • явные ссылки на родителей

  2. Обработка drag-событий

    • определение source

    • определение target

    • проверка допустимости вложенности

  3. Обновление структуры

    • удаление узла из старого места

    • вставка в новое место

Пример логики изменения данных

// removeNode(tree, sourceId)
// insertNode(tree, targetId, node)

Типичные сложности

  • предотвращение вложения в самого себя

  • корректный расчёт индексов

  • производительность при больших деревьях

Краткий вывод

Вложенный drag-and-drop — это задача управления деревом данных. Если структура обновляется корректно, React сам отрисует правильный UI без ручных манипуляций.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • React

    React

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

#drag

#drop

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