使用Dragula拖放保存拖动项目的位置,React版本(React - Dragula)
Save Position of dragged items with Dragula Drag and Drop, React Version (react-dragula)
我使用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的拖动项的新位置。
相关文章:
- React重新渲染但未显示正确的组件
- React组件等待所需道具进行渲染
- React中的数据集表示
- Webpack开发服务器和React服务器端渲染
- React Redux错误页面管理
- react.js中的密钥绑定
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React:按键的性能提升
- 如何在react js中从一个页面导航到另一个页面
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- 如何使用带有Preact的React路由器
- 使用Jest测试React Native应用程序
- 为什么我的点击事件没有使用 react js 触发
- React 15使用空字符串删除输入值
- react组件中的绑定方法
- 是否存在React Native“;WEB代码安全防护”;
- 如何在react js中移动第二个组件
- 使用Dragula拖放保存拖动项目的位置,React版本(React - Dragula)