文档/API

makeSortableItem

注册可排序列表或树的一行——它可以被拖拽、为其他项让出空间,并落到自己的位置上。

编辑此页

本页由 AI 翻译,可能存在不准确之处。 阅读英文原文

function makeSortableItem<TData = unknown>(  target: MaybeElementRef,  options: SortableItemOptions<TData>,): SortableItemReturn;

让元素成为可排序列表或树中的一行:它可以被拖拽、腾出位置并落到自己的位置上。在调用了 makeSortableList(或 makeSortableTree)的组件内部渲染的组件中调用它;如果那里创建了多个列表,这一行会加入元素包含它的最内层列表。用 item(由列表的 getKey 生成 key,默认 item.id)或 id 标识这一行。

const el = useTemplateRef<HTMLElement>('el');
const { isPlaceholder, index } = makeSortableItem(el, { item: () => props.task, handle: '.grip' });

参见可排序列表。

Live

正在加载演示…

<script setup lang="ts">
import { DnDProvider } from '@vue-dnd-kit/core';
import TodoList from './TodoList.vue';
</script>

<template>
  <DnDProvider>
    <TodoList />
  </DnDProvider>
</template>

选项

传入 id 或 item(两者都传时 id 优先)。可排序的 key 必须来自数据:自动生成的 id 会在组件重新创建时(移到另一个列表、被虚拟列表回收)发生变化,拖拽就会丢失这个项。

除 canDrag 外,选项都接受值、ref 或 getter(overlay、dropAnimation:值或 ref),含义与 makeDraggable 上的相同。没有 keyboardMode:键盘按位置逐个移动可排序项。

Key值 · ref · getter

项在其列表中的 key。在虚拟列表中,getter 能让它保持最新。

unknown值 · ref · getter

这个元素渲染的项,例如 () => props.task。它的 key 来自所属列表(或树)的 getKey,默认为 item.id。

Component值 · ref

这个项的浮层组件;优先于列表的 overlay。在拖拽过程中切换的 ref 会立即替换它。

DropAnimation值 · ref

这个项的拖拽结束时浮层如何落位;优先于列表的 dropAnimation。在放置时读取。

Modifier[]值 · ref · getter

这个项的拖拽修饰器,在 provider 的之后应用;优先于列表的 modifiers。

'x' | 'y'值 · ref · getter

把这个项的拖拽锁定在一个轴上('x'、'y');优先于列表的 axis。

MaybeElement | string值 · ref · getter

项内部用于开始拖拽的元素或选择器(它也会得到相关属性)。

boolean值 · ref · getter

true:这个项不能被拖拽(与禁用列表中的每个项一样)。

string | string[]值 · ref · getter

它的一个或多个类型,用于 group.put 规则和放置目标的 accept。默认:它所在列表的分组名称。

TData值 · ref · getter

拖拽要携带的任何内容:事件和放置目标以 active.data 读取它。

string值 · ref · getter

人们对项的称呼:屏幕阅读器文本会说出它,而不是项的 key(Picked up Tomato at position 2 of 5 in Garden)。事件以 active.label 和在 items 中携带它。

ActivationOptions值 · ref · getter

覆盖它所在列表(或树)的 activation 以及 provider 的。在按下开始时读取。

(event: PointerEvent | KeyboardEvent) => boolean

额外的关卡,例如只在按住某个键时才能拖拽。

boolean值 · ref · getter

设置 role/tabindex/aria-* 属性(默认 true),永远不会覆盖用户自己设置的。实时生效:关闭后,库设置的属性会被移除。

boolean | NativeDragOptions值 · ref · getter

用鼠标拖拽它就是浏览器自己的拖拽,可以离开页面(见 DraggableOptions.native)。它还携带这个项:应用另一个窗口中同一分组的列表会接收它,一旦被接收,它就离开这个列表('move')。

返回值

makeSortableItem 的返回值。

ComputedRef<boolean>

这个项正在被拖拽(对多项拖拽中的其他项也为 true),或者它的浮层仍在落位。

ComputedRef<boolean>

这个元素是被拖拽项将落入的位置:当前项的位置;在多项拖拽的 'group' 模式下,还包括随它一起移动的各项的位置。

WritableComputedRef<boolean>

它在 provider 的选中集合中:拖拽一个选中的项会带上全部。对它赋值即可选中或取消选中。

ComputedRef<SortableIndicator | null>

指示器模式:列表的 indicator 依附于这个项时为该值,否则为 null。side 说明插入线的位置;在树中,depth 和 parentKey 说明放置落在哪里(side: 'inside':放进这个项)。

ComputedRef<number>

在渲染出的草稿中的索引,未知时为 -1。