[javascript] Beautiful Dnd를 사용하여 드래그 앤 드롭으로 요소 투명도 조절하기

Beautiful Dnd는 React를 위한 강력한 드래그 앤 드롭 라이브러리입니다. 이 라이브러리를 사용하면 웹 애플리케이션에서 요소를 쉽게 드래그 앤 드롭할 수 있으며, 이를 통해 유연한 UI를 구축할 수 있습니다. 이번 글에서는 Beautiful Dnd를 사용하여 요소의 투명도를 드래그 앤 드롭으로 조절하는 방법에 대해 알아보겠습니다.

Beautiful Dnd 설치하기

먼저 Beautiful Dnd를 설치해야 합니다. npm을 사용하여 다음 명령어를 실행하여 Beautiful Dnd를 설치합니다.

npm install react-beautiful-dnd

요소 목록 준비하기

요소 목록을 준비해야 합니다. 예를 들어, items라는 배열에 다음과 같은 요소들을 선언하겠습니다.

const items = [
  { id: 'item-1', content: '요소 1', opacity: 1 },
  { id: 'item-2', content: '요소 2', opacity: 1 },
  { id: 'item-3', content: '요소 3', opacity: 1 },
  { id: 'item-4', content: '요소 4', opacity: 1 },
];

여기서 opacity는 요소의 투명도를 나타내는 값입니다.

드래그 앤 드롭 설정하기

Beautiful Dnd를 사용하여 드래그 앤 드롭을 설정해야 합니다. DragDropContext 컴포넌트로 감싸는 방법을 사용하겠습니다.


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

const App = () => {
  // ...

  const handleDragEnd = (result) => {
    // 드래그 앤 드롭 완료 후 요소의 투명도 업데이트
    if (!result.destination) return;
    
    const newItems = Array.from(items);
    const [reorderedItem] = newItems.splice(result.source.index, 1);
    newItems.splice(result.destination.index, 0, reorderedItem);
    
    setItems(newItems);
  };

  return (
    <DragDropContext onDragEnd={handleDragEnd}>
      <Droppable droppableId="list">
        {(provided) => (
          <ul {...provided.droppableProps} ref={provided.innerRef}>
            {items.map((item, index) => (
              <Draggable key={item.id} draggableId={item.id} index={index}>
                {(provided) => (
                  <li
                    {...provided.draggableProps}
                    {...provided.dragHandleProps}
                    ref={provided.innerRef}
                    style={{ opacity: item.opacity }}
                  >
                    {item.content}
                  </li>
                )}
              </Draggable>
            ))}
            {provided.placeholder}
          </ul>
        )}
      </Droppable>
    </DragDropContext>
  );
};

export default App;

요소 투명도 조절하기

위의 코드에서 드래그 앤 드롭이 완료된 후 handleDragEnd 함수가 호출됩니다. 이 함수에서는 요소의 투명도를 업데이트합니다. 드래그 앤 드롭으로 위치가 변경된 요소를 찾은 후 items 배열에서 해당 요소를 삭제하고, 목적 위치에 다시 삽입합니다. 그리고 setItems 함수를 사용하여 상태를 업데이트합니다.

위의 코드에서는 style 속성을 사용하여 요소의 투명도를 실시간으로 변경합니다. item.opacity 값을 통해 투명도를 조절할 수 있습니다.

마무리

Beautiful Dnd를 사용하여 드래그 앤 드롭으로 요소의 투명도를 조절하는 방법에 대해 알아보았습니다. Beautiful Dnd는 다양한 드래그 앤 드롭 기능을 제공하므로 웹 애플리케이션에서 유연한 UI를 구현하는 데 유용합니다. Beautiful Dnd의 다른 기능들도 살펴보시기 바랍니다.

참고 자료