gpt4 book ai didi

javascript - 使用 Dragula Drag and Drop 保存拖动项目的位置,React 版本 (react-dragula)

转载 作者:行者123 更新时间:2023-12-03 13:47:57 31 4
gpt4 key购买 nike

我正在使用react-dragula ( react-dragula ) 来拖放元素。掉落后如何保存元素位置。

  dragDecorator = () => {
let options = { };
Dragula([componentBackingInstance], options);
};

<div className="wrapper" ref={this.dragDecorator}>
<div className="container col-md-4" id="0">
<div className="panel panel-white" id="A1">
</div>
<div className="panel panel-white" id="A2">
</div>
</div>
<div className="container col-md-4" id="0">
<div className="panel panel-white" id="B1">
</div>
<div className="panel panel-white" id="B2">
</div>
</div>
</div>

最佳答案

  dragDecorator = (componentBackingInstance) => {
if (componentBackingInstance) {
let options = {};

const dragula = Dragula([componentBackingInstance], options);
dragula.on('drop', (el, target, source, sibling) => {
const newColumnIndex = parseInt(get(target, 'id'));
const previousColumnIndex = parseInt(get(source, 'id'));
const belowId = get(sibling, 'id');
const itemId = get(el, 'id');

let columns = this.state.columns;
if (belowId === undefined) {
const newItemIndex = columns[newColumnIndex].items.length;
columns[previousColumnIndex].items.splice(columns[previousColumnIndex].items.indexOf(itemId), 1);
columns[newColumnIndex].items.splice(newItemIndex, 0, itemId);
this.setState({columns});
}
else {
const newItemIndex = columns[newColumnIndex].items.indexOf(belowId);
columns[previousColumnIndex].items.splice(columns[previousColumnIndex].items.indexOf(itemId), 1);
columns[newColumnIndex].items.splice(newItemIndex, 0, itemId);
this.setState({columns});
}

if (this.props.onDrag !== undefined) {
this.props.onDrag(columns);
}
})
}
};

Columns 将返回一个数组,其中包含基于 ID 的每列中拖动项目的新位置。

关于javascript - 使用 Dragula Drag and Drop 保存拖动项目的位置,React 版本 (react-dragula),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831560/

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