gpt4 book ai didi

javascript - 无法在同一个可放置的react-beautiful-dnd中拖放组件

转载 作者:行者123 更新时间:2023-12-02 23:55:05 28 4
gpt4 key购买 nike

发生的情况是,当我在一列中有多个项目并尝试拖动其中一个时,只显示一个项目,并且根据发现的经验教训 here我应该处于可以移动同一列内的项目但不能移动的位置。在 React 开发工具中,state 和 r-b-dnd id 看起来不错,但我知道什么?我只是一个菜鸟。这是到目前为止我的 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 });
}

我的应用程序可以找到 here 。谢谢。

最佳答案

在您的代码中,在 onDragEnd 中您有此代码,这就是您无法重新排列同一列表上的项目的原因。当您在同一列表中移动项目时,源和目标可放置 ID 将相同。

if (destination.droppableId === source.droppableId && destination.index === source.index) {
console.log("they're equal");
return;
}
  • 在您的组件上,列表中所有项目的可拖动 ID 都是相同的。对于每个可拖动项目来说,它应该是唯一的。
  • 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 。希望这对您有所帮助。

    关于javascript - 无法在同一个可放置的react-beautiful-dnd中拖放组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435501/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com