拖拽组件
转载// 拖拽组件
import React, { useEffect, useState } from "react"
import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";
import './style.less';
// 重新记录数组顺序
const reorder = (list, startIndex, endIndex) => {
const result = Array.from(list);
//删除并记录 删除元素
const [removed] = result.splice(startIndex, 1);
//将原来的元素添加进数组
result.splice(endIndex, 0, removed);
return result;
};
export default function Drag(props) {
const [data, setData] = useState([])
useEffect(() => {
setData(props.data)
}, [])
useEffect(() => {
setData(props.data)
}, [props.data])
//拖拽结束
const onDragEnd = (result) => {
if (!result.destination) {
return;
}
//获取拖拽后的数据 重新赋值
const newData = reorder(data, result.source.index, result.destination.index)
setData(newData);
props.fnDrag(newData);
}
return <DragDropContext onDragEnd={onDragEnd}>
{/* direction代表拖拽方向 默认垂直方向:vertical 水平方向:horizontal */}
<Droppable droppableId="droppable" direction='vertical'>
{(provided, snapshot) => (
//这里是拖拽容器 在这里设置容器的宽高等等...
<div
{...provided.droppableProps}
ref={provided.innerRef}
className='metarialgroupDragBox'
>
{/* 这里放置所需要拖拽的组件,必须要被 Draggable 包裹 */}
{
data.map((item, index) => (
<Draggable
index={index}
key={item.key}
draggableId={item.key}
>
{(provided, snapshot) => (
//在这里写你的拖拽组件的样式 dom 等等...
<div
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}
className='boxItem'
// style={{ ...getItemStyle(), ...provided.draggableProps.style }}
>
{/* {item.name} */}
{props.list && props.list(item)}
</div>
)}
</Draggable>
))
}
{/* 这个不能少 */}
{provided.placeholder}
</div>
)}
</Droppable>
</DragDropContext>
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:集合类和I/O
下一篇:pip指定python版本安装库
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JS拖拽功能的简单实现以及课程表拖拽排课
利用浏览器提供的拖拽API实现拖拽功能
拖拽 事件处理 拖拽操作 拖拽事件 -
vue拖拽排序(原创组件)
手写vue拖拽排序
vue.js javascript 前端 json 拖拽 -
前端拖拽组件优化
,是Api自动生成的。但是由于这是一个很
拖拽 重绘 html 自定义 文档流 -
python生成cin文件
Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台1. 效果图2. 命令行:proto文件转.class(绝对路径或相对路径)3. 序列化、反序列化api4. pb转json,json转pb,pb转dict5. 打包.exe/.sh并调用6. 源代码6.1 addressbook.proto6.2 pb2json.py参
python生成cin文件 python Pythonpb与json转换 google.protobuf json_format