react-dnd 是什么?
干嘛用?
如何使用?
在什么情況下使用?
一、概念
React DnD 是一組 React 高階組件,使用的時候只需要使用對應的 API 將目標組件進行包裹,即可實現拖動或接受拖動元素的功能。將拖動的事件轉換成對象中對應狀態的形式,不需要開發者自己判斷拖動狀態,只需要在傳入的 spec 對象中各個狀態屬性中做對應處理即可。剛剛接觸可能難以理解,真正熟悉用法之后會感覺很方便。
幾個概念
- DragSource 用於包裝你需要拖動的組件,使組件能夠被拖拽(make it draggable)
- DropTarget 用於包裝接收拖拽元素的組件,使組件能夠放置(dropped on it)
- DragDropContext 用於包裝拖拽根組件,DragSource 和 DropTarget 都需要包裹在DragDropContext內
參數說明
DragSource(type, spec, collect)
DropTarget (type, spec, collect)
DragSource和DropTarget各有三個參數
type: 拖拽類型,必填。當 source組件的type 和 target組件的type 一致時,target組件可以接受source組件。
spec: 拖拽事件的方法對象,必填。
collect: 把拖拽過程中需要信息注入組件的 props,接收兩個參數 connect and monitor,必填。
二、DragSource:使組件能夠被拖拽
使用DragSource
包裹住組件,使其可以進行拖動。