Dnd-kit的用法

import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
import { DndContext, DragOverlay } from "@dnd-kit/core";
import {CSS} from '@dnd-kit/utilities';
import { SortableContext, useSortable } from "@dnd-kit/sortable";


interface DragOptionItemProps {
    id: string | number;
    data?: any
}
function DragOptionItem({
    id,
    data
}: DragOptionItemProps) {
    const {
        attributes,
        listeners,
        setNodeRef,
        transform,
        transition,
        isDragging
      } = useSortable({
        id,
      });
      const style = {
        transform: CSS?.Transform?.toString(transform && { ...transform, scaleY: 1 }),
        transition,
      };
    return (
        <div ref={setNodeRef} style={style} {...attributes} {...listeners}>{data?.title}</div>
    )
}

function DragCom() {
    const data = [
        { id: '1111', title:'zzzzz'},
        { id: '2222', title:'sssss'},
        { id: '3333', title:'uuuuu'}
    ];
    const onDragEnd = (event: any) => {
        console.log('event', event)
    }
    const handleDragStart = (event: any) => {
        console.log('event', event)
    }
    return (
        <DndContext
            modifiers={[restrictToVerticalAxis]}
            onDragStart={handleDragStart}
            onDragEnd={onDragEnd}>
            <SortableContext items={data}>
                {
                    data?.map((it: any, index: number) => {
                        return (
                            <DragOptionItem key={it.id} id={it.id} data={it} />
                        )
                    })
                }
            </SortableContext>
        </DndContext>
    )
}
export default DragCom;

重点:使用SortableContext 必须使用useSortable,否则不生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值