ドラッグ&ドロップ機能は、現代のWebアプリケーションでよく見られる機能で、ユーザーがアイテムをシームレスに並べ替えることができるようにします。このチュートリアルでは、dnd-kit/core
ライブラリを使用してReactアプリケーションでドラッグ&ドロップ機能を実装する方法について探ります。このライブラリの主要なコンポーネントを使用して、ドラッグ可能なアイテムの簡単なリストを作成します。
プロジェクトのセットアップ
実装に入る前に、必要な依存関係をインストールします。Reactプロジェクトで@dnd-kit/core
をインストールしてください。
ここからは、ドラッグ可能なリストのコンポーネントを作成していきます。
DraggableListコンポーネントの作成
DraggableList
コンポーネントは、ドラッグ可能なアイテムのコンテナとして機能します。DraggableList.tsx
ファイルのコードは以下の通りです:
DraggableList.tsx(DraggableList)
このコンポーネントは、@dnd-kit/core
によって提供されるDndContext
とSortableContext
をセットアップします。また、リスト内の各アイテムをラップするDraggableItem
コンポーネントを定義しています。
ドラッグ可能なアイテムの構築
リスト内の各ドラッグ可能なアイテムは、DraggableItem
コンポーネントで表されます。ユーザーインタラクションを向上させるためにDraggableHandle
も含まれています。コードは以下の通りです:
DraggableList.tsx(DraggableItem)
このコンポーネントは@dnd-kit/core
からのuseSortable
フックを使用してドラッグ&ドロップの動作を処理します。
Pageコンポーネントでドラッグ&ドロップを実装
メインのページコンポーネント(page.tsx
)では、DraggableList
をインポートして使用し、製品のドラッグ可能なリストを作成しています。コードは以下の通りです:
Nextjs を利用したため、page.tsx
ファイルとしていますが、通常のReactコンポーネントでも利用可能です。
このコンポーネントは製品のリストを表示し、onDragStart
およびonDragEnd
コールバックは関連するイベントをコンソールに記録します。
スタイリングとカスタマイズ
アプリケーションのデザインに基づいてドラッグ可能なアイテムのスタイリングを自由にカスタマイズしてください。提供されたコードには、Tailwind CSSを使用した基本的なスタイリングが含まれています。
まとめ
このチュートリアルでは、react
と@dnd-kit/core
を使用して簡単なドラッグ可能なリストを実装しました。このライブラリは、ドラッグ&ドロップの相互作用を処理するための堅牢なツールセットを提供しており、シームレスなユーザーエクスペリエンスを簡単に作成できます。
アニメーション、カスタムドラッグハンドルなど、この実装をさらに向上させることができます。追加のオプションや可能性については、@dnd-kit/core
のドキュメントを探索してください。