在一个单独的Dropable中,我Map了一个项目数组,每个项目都是自己的Dragable。我的代码工作正常,并且正在做它应该做的事情(也就是说,我可以单独移动每个Dragable)。我只是想知道是否有一种方法可以阻止我的其他Dragable“向上移动”或替换被拖动项目留下的空白位置。
下面是我的代码(DragDropContext在另一个组件中,因此这里没有显示):
<Droppable
droppableId='itemDroppable'
type='acceptsItems'
isDropDisabled={true} >
{(provided) =>
<div ref={provided.innerRef}>
{this.props.items.map((item, index) =>
<Draggable
key={item.id}
draggableId={item.name}
index={index} >
{provided =>
<div
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps} >
{item.icon}
</div>
}
</Draggable>
)}
{provided.placeholder}
</div>
}
</Droppable>
这里有一段视频记录了当时的情况:
正如你所看到的,下面剩下的图标会上移,并取代被拖出Dropable的项目留下的空位。有什么方法可以阻止这种情况吗?理想情况下,我希望空位保持为空,而不是让后面剩下的图标上移并填满。
先谢谢你!
2条答案
按热度按时间q3qa4bjr1#
我没有一个直接的解决方案,但我有一个想法,可能会解决这个问题。
当你使用
Array.map()
函数显示项目时例如:
onDragEnd()
中实现删除函数时,我们可以改变那个元素的标志。rkkpypqq2#
这可能不是正确的解决方案,但不失为一种变通方法。