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' });
参见可排序列表。
正在加载演示…
<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 · gettertrue:这个项不能被拖拽(与禁用列表中的每个项一样)。
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。