antd react可拖拽,布局配置

2023-10-31

import {
    DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';可拖拽的包

可拖拽:DraggableRow/index.jsx 子组件
import React, {
    useState,useRef } from 'react';
import {
    Modal, Form, Select, Input, Button, Row, Col,Tooltip} from 'antd'
import {
    DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import {
    CloseCircleOutlined, ExclamationCircleOutlined} from '@ant-design/icons';
import styles from './index.less'
import {
    debounce } from 'lodash';
const grid = 8;
const getItemStyle = (isDragging, draggableStyle) => ({
   
    // some basic styles to make the items look a bit nicer
    userSelect: 'none',
    // padding: grid * 4,
    margin: `0 0 ${
   grid}px 0`,

    // change background colour if dragging
    background: isDragging ? '#fff' : '#fff',
    // border: '1px solid #ddd',
    margin: '0px auto 10px auto',
    width:"70%",
    // styles we need to apply on draggables
    ...draggableStyle,
});
const reorder = (list, startIndex, endIndex) => {
   
    const result = Array.from(list);
    const [removed] = result.splice(startIndex, 1);
    result.splice(endIndex, 0, removed);
    let arr = [];
    result.map((v, k) => {
   
        arr.push(v);
    });
    return arr;
};

export default (props)=>{
   
    const {
    list, config } = props;
    const {
   
        activeKey,
        setHomeList,
        setDuapList,
        setVisible,
        setIsEdit,
        setCurrentEditItem,
        setOtherVisible,
        onRowDelete,
        setEditOtherOrder,
        setItemTypeCode,
        renderOrder,
    } = config
    const onDragEnd = (result) => {
    //拖拽结束事件
        console.log('result', result);
        let arr = [...list]
        if (!result.destination) {
   
            return;
        }
        const newList = reorder(arr, result.source.index, result.destination.index);
        let IdList = [];
        if(!!newList && newList.length){
   
            newList.map(item=>{
   
                IdList.push(item.Id)
            })
        }
        if(!!IdList && IdList.length){
   
            renderOrder(IdList)
        }
        if (activeKey == "1001") {
   
            setHomeList(newList)
        }else{
   
            setDuapList(newList)
        }
    }

    const handleEditItem = (e,item,index) =>{
   
        e.preventDefault();
        e.stopPropagation();

        Modal.confirm({
   
            icon: <ExclamationCircleOutlined />,
            content: 'Are you sure to delete?',
            okText: 'Confirm',
            cancelText: 'Cancel',
            onOk() {
   
                onRowDelete(item)
            },
        })
    }

    const handleEditOtherItem = (e, item, index, order) =>{
   
        e.preventDefault();
        e.stopPropagation();
        setOtherVisible(true);
        setIsEdit(true);
        setItemTypeCode(item.DisplayItemDetailList[order-1].ItemType)
        console.log('item', item);
        console.log('index', index);
        console.log('order', order);
        setCurrentEditItem(item);
        setEditOtherOrder(order);
    }

    const onIntroductionEdit = (e, item, index) =>{
   
        e.preventDefault();
        e.stopPropagation();
        setCurrentEditItem(item);
        setVisible(true);
        setIsEdit(true);
    }

    const onVideoEdit = (e, item, index) =>{
   
        e.preventDefault();
        e.stopPropagation();
        setCurrentEditItem(item);
        setVisible(true);
        setIsEdit(true);
    }

    return (
        <div style={
   {
   background:"#fff",paddingBottom:'30px'}}>
            <DragDropContext onDragEnd={
   onDragEnd}>
                <Droppable droppableId="droppable">
                    {
   (provided, snapshot) => (
                        <div ref={
   provided.innerRef} {
   ...provided.droppableProps}>
                            {
   list.map((item, index) => {
   
                                let dom;
                                if (item.FunctionType == 1001) {
     //
                                    dom = <div
                                        editform="false"
                                        key={
   item.Id}
                                        style={
   {
    padding: "0 20px", background: "#fff", position: "relative" }}
                                        // onClick={() => {
   
                                        //     this.showEditModal(item);
                                        // }}
                                    >
                                        <Draggable
                                            shouldRespectForcePress={
   true}
                                            key={
   item.index}
                                            draggableId={
   item.Id}
                                            index={
   index}
                                        >
                                            {
   (provided, snapshot) => (
                                                <div
                                                    ref={
   provided.innerRef}
                                                    {
   ...provided.draggableProps}
                                                    {
   ...provided.dragHandleProps}
                                                    style={
   getItemStyle(
                                                        snapshot.isDragging,
                                                        provided.draggableProps.style
                                                    )}
                                                >
                                                    <div classN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

antd react可拖拽,布局配置 的相关文章

随机推荐

  • H5 手机适配

    刘海屏 水滴屏 小黑条适配 兼容ios 安卓 当我们在写h5页面的时候 常常会遇到刘海屏 水滴屏 小黑条等手机 加入以下css 即可以解决适配 padding constant safe area inset top constant sa
  • 码住!IC设计常用工具合集!

    芯片设计过程中 选择和使用适合的工具是非常重要的 芯片设计工具通常分为三类 EDA工具 模拟仿真工具和布局工具 一 EDA工具 EDA工具是芯片设计的核心 它包括原理图绘制 逻辑综合 门级仿真工具和物理版图编辑等 可以帮助设计师设计出电路的
  • 微CLI工具箱-WeToolkit

    当需要将一个Python脚本快速提供给用户使用时 直接提供纯命令行指令给用户 不友好 如果开发可视化的GUI界面 又太废时间 而且无法在Linux服务器上使用 于是就整了这个微CLI工具箱 WeToolkit 解决这个问题 微CLI工具箱
  • TCP连接探测中的Keepalive和心跳包. 关键字: tcp keepalive, 心跳, 保活

    TCP连接探测中的Keepalive和心跳包 关键字 tcp keepalive 心跳 保活 TCP连接探测中的Keepalive和心跳包 关键字 tcp keepalive 心跳 保活 分类 linux2013 11 29 17 46 3
  • 好用的函数在线绘图工具

    网址https www desmos com calculator 左侧可以填写函数名 左键拖动图形 按住shift键 通过滚轮来对不同轴进行缩放
  • K8S生命周期---钩子函数(postStart/preStop)

    容器生命周期钩子 容器生命周期钩子 Container Lifecycle Hooks 监听容器生命周期的特定事件 并在事件发生时执行已注册的回调函数 支持两种钩子 postStart 容器创建后立即执行 注意由于是异步执行 它无法保证一定
  • 【无标题】视频看看

    已有视频 宅在家里学编程丨1 循环重复 腾讯 花了2万多买的Python教程全套 现在分享给大家 入门到精通 Python全栈开发教程 Python基础入门教程 常用文件操作 学习python必备技能
  • vue项目中,封装一个全局过滤器,用来过滤时间

    在Vue项目中 封装一个全局过滤器filter 需求如下 我们在动态渲染数据的时候 需要把 2019 10 15T07 20 47 000Z 改变成 2019 10 15 在页面中显示 步骤如下 1 先封装一个全局过滤器filter 封装项
  • Linux系统删除文件硬盘没有释放问题

    最近遇到一个问题 就是Linux系统删除文件 结果发现硬盘没有变化 找了很久才找到原因 在Linux或者Unix系统中 通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接 unlink 然而假设文件是被 打开的 有一个进程正
  • win10+ubuntu双系统无法进入ubuntu,bios设置修复grub

    1 进入bios 2 选择Boot Sequence Boot List Option gt Add boot Option 3 弹框 任意填充Boot Option Name 选择File Name路径为 EFI ubuntu grubx
  • 由一本缺页的"书"引发出一系列思考

    写这篇文章 源自于 vb6 0 数据库开发经典实例精解 这本书 事件起因 6 8日晚上 米老师查看我带的学妹看的 vb6 0 数据库开发经典实例精解 电子版的书 结果发现她看的电子版的书只有实例1到实例5 没有开篇也没有结尾 作为她的导师的
  • 【华为OD机试】完全二叉树非叶子部分后序遍历【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 给定一个以顺序储存结构存储整数值的完全二叉树序列 最多1000个整数 请找出此完全二叉树的所有非叶子节点部分 然后采用后序遍历方式将此部分树 不包含叶子 输出 1 只
  • Dependency-Track单机版容器化部署

    官方文档 Dependency Track 官方说明 Dependency Track是一个智能组件分析平台 允许组织识别和降低软件供应链中的风险 Dependency Track通过利用软件材料清单 SBOM 的功能 采取了一种独特且非常
  • Java实现顺序表

    目录 一 顺序表的简单理解 1 为什么我们要以数组为基础来构建顺序表呢 2 顺序表都具有哪些功能 二 顺序表的代码实现 1 构建并且初始化顺序表 2 在顺序表中添加元素 1 判断需要添加元素的下标是否在顺序表的范围内 2 如果添加元素下标合
  • 送书|想理解深度学习,究竟应该降维打击 or 升维思考?

    题图 Designed by Freepik 让我们从一道选择题开始今天的话题 什么是神经网络 请选择以下描述正确的一项或多项 A 神经网络是一种数学函数 它接收输入并产生输出 B 神经网络是一种计算图 多维数组流经其中 C 神经网络由层组
  • 无法进入到/data/data/com.example.databasetest/databases/目录

    1 先直接说我的问题和解决方案 我没跑程序 数据库还没创建 有点憨 方案嘛 大家都知道了 2 若你不是这类问题 可参考以下链接 文章 3 以下是我的分析过程 没兴趣的可以不看 当我运行命令cd data data com example d
  • 一个神奇的测试_解密世界上最神奇的数字:宇宙密码142857

    先来看一组乘法 142857 1 142857 142857 2 285714 142857 3 428571 142857 4 571428 142857 5 714285 142857 6 857142 看出什么了么 142857依次从
  • Qstring转char*

    QString str hello QString转char QByteArray ba str toLatin1 char mm ba data
  • centos 下mysqldump备份多个数据库命令

    mysqldump u root p databases 数据库1 数据库2 gt xxx sql 还原 系统命令行 MySQL uroot p123456
  • antd react可拖拽,布局配置

    import DragDropContext Droppable Draggable from react beautiful dnd 可拖拽的包 可拖拽 DraggableRow index jsx 子组件 import React us