Невозможно перетащить компоненты в тот же Droppable Reaction-Beautiful-Dnd
Происходит следующее: когда у меня есть несколько элементов в столбце и я пытаюсь перетащить один, отображается только один, и в соответствии с найденными здесь уроками я должен быть в том месте, где я могу перемещать элементы в пределах одного столбца, но не могу. В React dev инструменты состояния и идентификаторы rb-dnd выглядят хорошо, но что я знаю? Я просто новичок. Вот что у меня в моем onDragEnd
до сих пор.
onDragEnd = result => {
const { destination, source, draggableId } = result;
if (!destination) return;
if (
destination.droppableId === source.droppableId &&
destination.index === source.index
) {
return;
}
let start = this.state.list[source.droppableId];
let finish = this.state.list[destination.droppableId];
if (start === finish) {
let updatedList = this.state.list.map(obj => {
if (obj.id === source.droppableId) {
obj.cards.splice(source.index, 1);
obj.cards.splice(destination.index, 0, draggableId);
}
return obj;
});
this.setState({ list: updatedList });
}
И мое приложение можно найти здесь. Благодарю.
1 ответ
В вашем коде, в onDragEnd
у вас есть этот код, поэтому вы не можете переставить элементы в одном списке. Когда вы перемещаете элементы по одному и тому же списку, идентификаторы Droppable источника и назначения будут одинаковыми.
if (destination.droppableId === source.droppableId && destination.index === source.index) {
console.log("they're equal");
return;
}
- В вашем компоненте идентификатор перетаскивания одинаков для всех элементов в списке. Он должен быть уникальным для каждого перетаскиваемого элемента.
const Card = props => {
return (
// This is NOT unique. This should be dynamic, we should use idx probably.
<Draggable draggableId={props.col + "-" + props.color} index={props.idx}>
{provided => (
После исправления этих двух я могу перемещать элементы: https://codesandbox.io/s/r5z28w85yo. Надеюсь, это полезно.