// 拖拽开始时,将被拖卡片数据存放到state,并让被拖拽元素原本的位置显示被拖拽样式,
// 设置一个延迟,解决一触发拖拽就给该元素加上了绝对定位的蒙版,导致拖拽不动的问题
onDragStart = (e, item) => {
setTimeout(() => {
this.setState({
courseCard: item
})
}, 1000 * 0.05)
}
onDragEnd = () => {
// 拖拽完成后的逻辑,如恢复被拖拽对象元素在原本位置的样式
}
onDragEnter = (e) => {
// 处理拖拽对象元素进入目标位置内时需要做的逻辑
}
onDragOver = (e) => {
e.preventDefault();
}
onDrop = (e) => {
// 处理将拖拽对象元素放置到目标位置后的业务
}
// 拖拽目标位置元素
<td
onDragEnter={(e) => this.onDragEnter(e)}
onDragOver={this.onDragOver}
onDrop={(e) => this.onDrop(e)}
>
...
</td>
// 拖拽对象元素
// 被拖拽卡片id
const currCard = this.state.courseCard['schedulePlanClassId'] || ''
<div className={style['schedule-card-box']}>
<div className&