Get started with react-dnd CDN

MIT licensed

React-dnd is a popular library for implementing drag-and-drop functionality in React applications.

Tags:
  • react
  • reactjs
  • file
  • drag
  • drop
  • html5
  • draggable
  • droppable
  • drag-and-drop
  • dnd
  • javascript
  • react-component
  • hoc

Stable version

Copied!

How to start using react-dnd CDN


import React from 'react';
import { DragDropContext, Droppable, Draggable } from 'react-dnd';

const MyComponent = () => {
  const [items, setItems] = React.useState([1, 2, 3]);

  const moveItem = (source, destination) => {
    setItems(prevItems => {
      const sourceIndex = prevItems.indexOf(source.item.id);
      const destinationIndex = prevItems.indexOf(destination.item.id);

      if (sourceIndex < 0 || destinationIndex < 0) return prevItems;

      const newItems = [...prevItems];
      const item = newItems.splice(sourceIndex, 1)[0];
      newItems.splice(destinationIndex, 0, item);

      return newItems;
    });
  };

  return (
    <DragDropContext onDragEnd={moveItem}>
      <Droppable droppableId="droppable">
        {(provided, snapshot) => (
          <div ref={provided.innerRef} {...provided.droppableProps}>
            <h3>Droppable Area</h3>
            <div>
              {items.map(id => (
                <Draggable key={id} draggableId={id.toString()} index={items.indexOf(id)}>
                  {(provided, snapshot) => (
                    <div
                      ref={provided.innerRef}
                      {...provided.draggableProps}
                      {...provided.dragHandleProps}
                    >
                      {id}
                    </div>
                  )}
                </Draggable>
              ))}
              {provided.placeholder}
            </div>
          </div>
        )}
      </Droppable>
    </DragDropContext>
  );
};

export default MyComponent;
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!

All versions