Drag and Drop library for React.
Install via npm
npm install react-tiny-dndor
yarn add react-tiny-dnd- Vertical lists
- Touch support 📱 (desktop and mobile)
- Extra small 
- Easy auto scrolling integration 🔥
- Add and remove items with no doubts
- Variable heights supported by design 🚀
- Custom preview component for draggable
- Custom drag handles
- Multiple drag handlers
App.js
const [items, setItems] = useState(defaultItems);
const onDrop = (dragIndex: number, overIndex: number) => {
  const nextItems = moveItems(items, dragIndex, overIndex);
  setItems(nextItems);
};
const context = useDraggableContext({
  onDrop,
});
return (
  <>
    {items.map((item, i) => {
      return (
        <DraggableItem context={context} key={item.id} index={i} item={item} />
      );
    })}
  </>
);DraggableItem.js
const DraggableItem = ({
  index,
  context,
  item,
}) => {
  const {
    listeners, // Handler listeners can be passed to Draggable component as well
    isDragging,
  } = useDraggable(context, index);
  
  return (
    <Draggable
      context={context}
      key={item.id}
      index={index}
      preview={
        <Item id={item.id} color={item.color} listeners={listeners} isDragging={false} />
      }
    >
      <Item
        item={item}
        handler={(
          <div className="dnd-icon" {...listeners}>
            <img src={dndIc} alt="dnd" />
          </div>
        )}
      />
    </Draggable>
  );
};- onDrop: Function- fires when the item drops in the desired place
- snapThreshold?: number- the threshold from which drop areas will be highlighted
Returns DraggableContextType - containing the dragging state
- context: DraggableContextType- containing the dragging state
- index: number- uses to identify the item
Returns { listeners: EventHandler[], isDragging: boolean }
- context: DraggableContextType- containing the dragging state
- index: number- uses to identify the item
- listeners?: EventHandler[]- containing dragging event handlers and can be passed to your desired handler (one or more)
- dividerClassName?: string- Customize horizontal divider
- preview?: ReactNode- Shows the element when dragging