当前位置: 首页 > news >正文

react拖拽依赖库react-dnd

注:对于表格自定义行可以拖拽和树自定义节点可以拖拽等比较适用,其余的拖拽处理可以使用dragstart,drop等js原生事件来实现

react-dnd使用方法很简单,直接上干货

第一步安装依赖并引入

import { DndProvider } from 'react-dnd';
import { HTML5Backend } from "react-dnd-html5-backend"

使用对应的组件包装html结构,html结构需包含拖拽目标和拖拽释放目标

<CountContext.Provider value={[]}><DndProvider backend={HTML5Backend}><div className={styles['drop-target']}><DropTarget/></div><div className={styles['drag-target']}><DragTarget/></div></DndProvider>
</CountContext.Provider>

拖拽目标

import { useDrag } from 'react-dnd';
const [, drag] = useDrag({type: "Box",item: { data: { ...需要携带的数据} },});

*一定要给拖拽目标添加useDrag返回的对象drag

  <div ref={drag} key={key}>{title}</div>

拖拽释放目标

import { useDrop } from "react-dnd"
const [, drop] = useDrop({accept: 'Box',collect: () => { },drop: (item: any) => {//item.data 为拖拽目标携带的数据 处理业务逻辑},
})

一定要给释放的目标添加useDrop返回的对象drop,这样就可以在拖拽悬浮时收到可释放的拖拽样式

<div ref={drop} className={styles['table-container']}>...
</div>
http://www.lryc.cn/news/162120.html

相关文章:

  • win10环境安装使用docker-maxwell
  • Docker部署RabbitMQ
  • 23个react常见问题
  • 【python基础】——Anaconda下包更新的坑及安装与卸载、及安装后Jupyter Notebook没反应的解决方法
  • CSS 中的 display 和 visibility
  • 解决mysql报错this is incompatible with DISTINCT
  • C++-map和set
  • 微信小程序AI类目-深度合成-AI问答/AI绘画 互联网信息服务算法备案审核通过教程
  • 蓝桥杯官网练习题(星期一)
  • centos7更新podman
  • Java特性之设计模式【抽象工厂模式】
  • 机器学习简介
  • linux之perf(2)list事件
  • 将多个EXCEL 合并一个EXCEL多个sheet
  • 【送书活动】揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例
  • 微信小程序——数据绑定
  • libbpf-bootstrap安卓aarch64适配交叉编译
  • 【剑指Offer】24.反转链表
  • 04-docker compose容器编排
  • 通过位运算打多个标记
  • [学习笔记]Node2Vec图神经网络论文精读
  • C# Linq源码分析之Take(五)
  • 性能监控-grafana+prometheus+node_exporter
  • (STM32H5系列)STM32H573RIT6、STM32H573RIV6、STM32H573ZIT6嵌入式微控制器基于Cortex®-M33内核
  • mysql配置bind-address不生效
  • Linux相关指令(下)
  • Codeforces Round 855 (Div 3)(A - F)
  • Friend.tech(FT):社交媒体金融的未来,真的如此美好吗?
  • yolov7中Concat之后加注意力模块(最复杂的情况)
  • 解除百度安全验证