dnd 使用
- 引入
import { DndProvider, useDrag, useDrop } from 'react-dnd'
import { HTML5Backend } from 'react-dnd-html5-backend'
<DndProvider backend={HTML5Backend}>
{
list.map(i => (
<SortDrag handleAry={handleAry} key={i} cardInfo={i} />
))
}
</DndProvider>
const [{ isDragging }, drag] = useDrag({
type,
item: info,
collect: monitor => ({
isDragging: monitor.isDragging(),
}),
})
const [isOver, drop] = useDrop({
accept: type,
drop: (item: any) => {
if (item.id === id) return
},
collect: monitor => {
const item = monitor.getItem()
if (item && item.id === id) return false
return monitor.isOver()
},
})
useEffect(() => {
drag(domRef.current)
drop(domRef.current)
}, [])