import React, { FC } from 'react'; import { DragSourceMonitor } from 'react-dnd'; export type obj = { [propname: string]: any; }; export interface IItemProps { dataList?: obj[]; /** 元素的拖拽类型,允许放置的类型。同react-dnd中的type,accept */ type: string; /** 被拖拽元素的数据 */ item: obj; /** 被拖拽元素的key,如果未指定itemKey属性,则该值为对应元素下标(index) */ itemkey: any; /** 被拖拽元素的下标 */ index: number; /** 拖拽元素的样式 */ listItemStyle?: React.CSSProperties; /** 参数item对应dataList的每一个元素以及对应的index下标,返回一个reactdom,控制拖拽元素内部的渲染 */ render: (item: obj, index: number) => React.ReactNode; /** 参数item对应dataList的每一个元素以及对应的index下标 返回一个boolen */ canDrag?: (dragItem: obj, monitor: DragSourceMonitor) => boolean; /** 当被拖拽元素hover在可放置的组件上时调用 */ hover?: (dragItem: obj, dropItem: obj) => any; /** 拖拽完毕后调用 参数item对应dataList的每一个元素, 第二个参数为拖拽连接器monitor */ /** 判断是否可以放下,第一个参数为可拖拽元素信息,第二个参数为拖拽连接器monitor*/ /** 放下操作,第一个参数为可拖拽元素信息,第二个参数为拖拽连接器monitor,返回值为undefined或任意对象,该返回值可以在endDrag中的monitor.getDropResult()中接收 */ drop?: (dragItem: obj, dropItem: obj, dataList: obj[]) => any; } declare const DndItem: FC; export default DndItem;