Javascript React DnD:使用IsDropDisabled禁用删除错误的元素类型
一段时间以来,我一直在努力寻找这个问题的答案,在图书馆里,我做得非常好。。。非常缺乏清晰的文档。一旦我对它有了清晰的理解,我希望能参与到改进中来 以下是我想要实现的目标 我有一个相当复杂的对象层次结构,多个可拖动类型可以在同一级别混合,其中一些甚至可以有相同可拖动的子对象 这使得“type”属性对我不起作用。我想将“IsDropDisabled”与“DragingOverWith”结合起来,使其成为现实,并管理其中的复杂性 基本上,我的想法是,当我当前拖动的项通过一个潜在的可拖放项时,我想根据类型的“允许”数组检查类型,如果类型正确,则允许它 为此,我想从下拉列表中访问“snapshot.draggingOverWith”,但问题是。。。“IsDropDisabled”在代码层次结构的上面,所以我有点不知道库中的代码实际上是如何进行比较的 这个想法是这样的:Javascript React DnD:使用IsDropDisabled禁用删除错误的元素类型,javascript,reactjs,react-beautiful-dnd,Javascript,Reactjs,React Beautiful Dnd,一段时间以来,我一直在努力寻找这个问题的答案,在图书馆里,我做得非常好。。。非常缺乏清晰的文档。一旦我对它有了清晰的理解,我希望能参与到改进中来 以下是我想要实现的目标 我有一个相当复杂的对象层次结构,多个可拖动类型可以在同一级别混合,其中一些甚至可以有相同可拖动的子对象 这使得“type”属性对我不起作用。我想将“IsDropDisabled”与“DragingOverWith”结合起来,使其成为现实,并管理其中的复杂性 基本上,我的想法是,当我当前拖动的项通过一个潜在的可拖放项时,我想根据类
<Droppable droppableId={props.verticalgroup.id} isDropDisabled={() => {CompareTypes(snapshot.draggingOverWith, ['Type1', 'Type3'])}>
{(provided, snapshot) => (
<div
{...provided.droppableProps}
ref={provided.innerRef}
className={snapshot.isDraggingOver ? 'changeBackground' : ''}
>
...[Other Code]
</div>
)}
</Droppable>
{CompareTypes(snapshot.draggingOverWith,['Type1','Type3'])}>
{(已提供,快照)=>(
…[其他代码]
)}
谢谢您的帮助。我想您可以尝试使用
DragDropContext
中的onDragStart
方法,并将所需信息发送到Dropable,以便isDropDisabled
有条件地工作
就像他们在这里做的一样
const[isDropDisabled,setIsDropDisabled]=useState(false);
const onDragStart=(任务)=>{
setIsDropDisabled(task.something==='xyz')//(
…[其他代码]
)}
工作正常。经过测试,它似乎不能与onBeforeCapture一起工作,而是与onDragStart一起工作。我很想知道发生这种事的背景是什么。onDragStart的缺点是更新需要几秒钟的时间,因此它有时会在某些嵌套组件上表现得异常。在DragEnd的末尾,我将所有连续isDropDisabled默认设置为true,并将其修复。最后,最好的方法。非常感谢。