Документация/Начало работы
Быстрый старт
Сортируемый список в трёх файлах — провайдер, список и его строки.
Страница переведена ИИ и может содержать неточности. Читать английский оригинал
Вот всё целиком, и оно уже работает. Перетащите строку — или перейдите к ней клавишей Tab, нажмите Space, передвиньте её стрелками и снова нажмите Space.
Загружаем демо…
<script setup lang="ts">
import { DnDProvider } from '@vue-dnd-kit/core';
import TaskList from './TaskList.vue';
</script>
<template>
<!-- The provider goes around the components that drag (often the whole app). -->
<DnDProvider>
<TaskList />
</DnDProvider>
</template>По шагам
Оберните приложение в провайдер
DnDProvider отвечает за драг. Любой композабл должен вызываться в компоненте, который
отрендерен внутри провайдера, — а не в том, чей шаблон его содержит.
Сделайте список
makeSortableList принимает элемент списка и ваш массив. Он возвращает items — черновик,
который перестраивается прямо во время драга. Рендерите черновик, а не свой массив, и задавайте
строкам ключи по id.
Сделайте строки
Каждая строка вызывает makeSortableItem со своим элементом и элементом данных, который она
рендерит. Её ключ берётся из item.id.
Когда бросок завершается, tasks получает новый порядок. Это обычный ref, поэтому остальное
приложение видит изменение, как и любое другое.
e.preventDefault() в onDrop и примените e.result сами.