[javascript] Beautiful Dnd를 사용하여 드래그 앤 드롭으로 워크플로우 만들기

이번 글에서는 Beautiful Dnd 라이브러리를 사용하여, 드래그 앤 드롭 기능을 통해 워크플로우를 만드는 방법을 알아보겠습니다.

Beautiful Dnd란?

Beautiful Dnd는 React에서 사용할 수 있는 드래그 앤 드롭 라이브러리로, 사용자 인터페이스(UI)를 향상시키기 위해 사용됩니다. 이 라이브러리는 사용자가 요소를 원하는 위치로 드래그 앤 드롭할 수 있는 기능을 제공하여, 사용자 경험을 향상시킵니다.

시작하기

먼저 Beautiful Dnd를 사용하기 위해서는 React 프로젝트가 설정되어 있어야 합니다. React 프로젝트가 설정되어 있다면, 다음 명령어를 사용하여 Beautiful Dnd를 설치합니다:

npm install react-beautiful-dnd

설치가 완료되면, 해당 라이브러리의 DragDropContext, Droppable, Draggable 컴포넌트를 가져와서 사용할 수 있습니다.

워크플로우 구성

Beautiful Dnd를 사용하여 워크플로우를 만들기 위해서는 다음 세 가지 요소가 필요합니다:

  1. DragDropContext: 드래그 앤 드롭 기능을 적용할 컴포넌트의 최상위 컴포넌트로 설정합니다.
  2. Droppable: 드래그 앤 드롭을 허용할 영역을 정의합니다.
  3. Draggable: 실제로 드래그 앤 드롭을 적용할 요소를 정의합니다.

아래는 Beautiful Dnd를 사용하여 워크플로우를 만드는 예제입니다:

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

const Workflow = () => {
  const items = ['Task 1', 'Task 2', 'Task 3'];

  const onDragEnd = (result) => {
    // 드래그 앤 드롭 완료 시 실행될 로직
    // ...
  };

  return (
    <DragDropContext onDragEnd={onDragEnd}>
      <Droppable droppableId="workflow">
        {(provided) => (
          <div {...provided.droppableProps} ref={provided.innerRef}>
            {items.map((item, index) => (
              <Draggable key={item} draggableId={item} index={index}>
                {(provided) => (
                  <div
                    {...provided.draggableProps}
                    {...provided.dragHandleProps}
                    ref={provided.innerRef}
                  >
                    {item}
                  </div>
                )}
              </Draggable>
            ))}
            {provided.placeholder}
          </div>
        )}
      </Droppable>
    </DragDropContext>
  );
};

export default Workflow;

위의 코드에서 Workflow 컴포넌트는 Beautiful Dnd의 컴포넌트를 사용하여 워크플로우를 생성합니다. items 배열은 워크플로우에서 드래그 앤 드롭될 각 항목을 나타냅니다. onDragEnd 함수는 드래그 앤 드롭이 완료된 후 호출될 콜백 함수입니다. 이 함수를 사용하여 드래그 앤 드롭 완료 시 실행할 로직을 구현할 수 있습니다.

결론

Beautiful Dnd를 사용하면 React 애플리케이션에서 간단하게 드래그 앤 드롭 기능을 구현할 수 있습니다. 이를 활용하여 워크플로우와 같이 사용자 인터페이스를 향상시킬 수 있는 기능을 구현할 수 있습니다.