首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用react漂亮的dnd将任务项移出初始列?

React DND(Drag and Drop)是一个用于实现拖放功能的React库。它提供了一组可重用的组件和API,使开发者能够轻松地实现拖放操作。

要使用React DND来实现将任务项移出初始列,你可以按照以下步骤进行操作:

  1. 安装React DND库:在终端中运行以下命令来安装React DND库和相关依赖:
代码语言:txt
复制
npm install react-dnd react-dnd-html5-backend
  1. 创建任务项组件:首先,你需要创建一个任务项组件,该组件将被拖动到其他列中。例如,你可以创建一个名为TaskItem的组件。
  2. 创建任务列组件:接下来,你需要创建一个任务列组件,该组件将包含多个任务项。例如,你可以创建一个名为TaskColumn的组件。
  3. 实现拖放功能:在TaskColumn组件中,你需要使用React DND提供的DragSourceDropTarget组件来实现拖放功能。DragSource用于将任务项标记为可拖动,而DropTarget用于指定任务项可以放置的目标位置。
  4. 更新任务项状态:当任务项被拖动到其他列时,你需要更新任务项的状态以反映其新的位置。你可以使用React的状态管理来实现这一点。

以下是一个简单的示例代码,演示了如何使用React DND将任务项移出初始列:

代码语言:txt
复制
import React from 'react';
import { DragSource, DropTarget } from 'react-dnd';
import { ItemTypes } from './constants';

// 定义任务项的DragSource规范
const taskItemSource = {
  beginDrag(props) {
    return {
      id: props.id,
      column: props.column,
    };
  },
};

// 定义任务项的DropTarget规范
const taskItemTarget = {
  drop(props, monitor) {
    const { id: draggedId, column: sourceColumn } = monitor.getItem();
    const { column: targetColumn, onMoveTask } = props;

    // 如果任务项被拖动到不同的列中
    if (sourceColumn !== targetColumn) {
      onMoveTask(draggedId, sourceColumn, targetColumn);
    }
  },
};

// 将DragSource和DropTarget与任务项组件进行包装
const TaskItem = ({ id, column, isDragging, connectDragSource, connectDropTarget }) => {
  const opacity = isDragging ? 0.5 : 1;
  return connectDragSource(
    connectDropTarget(
      <div style={{ opacity }}>
        {/* 任务项的内容 */}
      </div>
    )
  );
};

// 使用DragSource和DropTarget包装任务项组件
export default DragSource(ItemTypes.TASK, taskItemSource, (connect, monitor) => ({
  connectDragSource: connect.dragSource(),
  isDragging: monitor.isDragging(),
}))(DropTarget(ItemTypes.TASK, taskItemTarget, connect => ({
  connectDropTarget: connect.dropTarget(),
}))(TaskItem));

// 在任务列组件中使用任务项组件
const TaskColumn = ({ column, tasks, onMoveTask }) => {
  return (
    <div>
      {/* 渲染任务项 */}
      {tasks.map(task => (
        <TaskItem key={task.id} id={task.id} column={column} onMoveTask={onMoveTask} />
      ))}
    </div>
  );
};

在上面的示例代码中,我们创建了一个TaskItem组件,并使用DragSourceDropTarget将其包装起来,以实现拖放功能。然后,在TaskColumn组件中,我们渲染了多个任务项,并将TaskItem组件作为子组件进行使用。

请注意,上述示例代码仅演示了React DND的基本用法,实际使用中可能需要根据具体需求进行适当的调整和扩展。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供高性能、可扩展的云服务器实例,适用于各种计算场景。了解更多信息,请访问:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全可靠、低成本的对象存储服务,适用于存储和处理各种类型的数据。了解更多信息,请访问:腾讯云对象存储

希望以上信息能对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于react-dnd,看这一篇就够了

概念 React DnD 是一组 React 高阶组件,使用时候只需要使用对应 API 目标组件进行包裹,即可实现拖动或接受拖动元素功能。...在拖动过程中,不需要开发者自己判断拖动状态,只需要在传入 spec 对象中各个状态属性中做对应处理即可,因为react-dnd使用了redux管理自身内部状态。...DndProvider 如果想要使用 React DnD,首先需要在外层元素上加一个 DndProvider。...Backend 上面我们给DndProvider传参数是一个backend,那么这里来解释一下什么是backend React DnD DOM 事件相关代码独立出来,拖拽事件转换为 React...由于拖拽发生在 H5 时候是 ondrag,发生在移动设备时候是由 touch 模拟,React DnD 这部分单独抽出来,方便后续扩展,这部分就叫做 Backend。

17.9K42
  • 前端10大开源拖拽排序库汇总, 让搭建,更简单

    「interact.js Pro」 使用更多调节器扩展了该开源功能,更多复杂内置交互,框架集成,和高级开发工具,用于节省我们事件和js开销。...」 是一组 「React」 高阶组件,使用时候只需要使用对应 「API」 目标组件进行包裹,即可实现拖动或接受拖动元素功能。...「github:」 https://github.com/madrobby/scriptaculous 6. react-beautiful-dnd 漂亮,可移植性 列表拖拽库....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 在该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验....特别是对于数据联动场景,很容易导致页面卡顿,为了解决这个问题,「Formily」每个表单字段状态做了分布式管理,从而大大提升了表单操作性能。

    5.9K21

    整理了12款开源拖拽库, 轻松上手可视化搭建

    「interact.js Pro」 使用更多调节器扩展了该开源功能,更多复杂内置交互,框架集成,和高级开发工具,用于节省我们事件和js开销。...」 是一组 「React」 高阶组件,使用时候只需要使用对应 「API」 目标组件进行包裹,即可实现拖动或接受拖动元素功能。...「github:」 https://github.com/madrobby/scriptaculous 6. react-beautiful-dnd 漂亮,可移植性 列表拖拽库....「react-beautiful-dnd」 是为垂直和水平列表专门构建更高级别的抽象. 在该功能子集内「react-beautiful-dnd」提供强大,自然和美丽拖放体验....特别是对于数据联动场景,很容易导致页面卡顿,为了解决这个问题,「Formily」每个表单字段状态做了分布式管理,从而大大提升了表单操作性能。

    1.4K20

    《HelloGitHub》第 65 期

    已在饿了么内部使用,存储了全量监控数据。...通过一系列文章和代码,教授如何实现 React 框架,从而能够更好理解 React 内部原理 地址:https://github.com/pomber/didact 14、iDataV:大屏数据可视化项目集合...项目由 prosemirror+remark 构建,入门开发者从中可以学习到如何使用 prosemirror 来开发富文本编辑器,以及如何设计一个针对编辑器插件系统 import { Editor }...通过它可以快速完成支持多人视频、语音、白板互动、录制回放等功能在线教室 地址:https://github.com/netless-io/flat 17、react-beautiful-dnd漂亮易用...React 列表拖拽库 地址:https://github.com/atlassian/react-beautiful-dnd PHP 项目 18、icon-workshop:移动应用图标生成工具。

    78720

    前端里拖拖拽拽了解一下?

    最近在项目中使用react-dnd[1],一个基于 HTML5 拖拽库,“拖拽能力”丰富了前端交互方式,基于拖拽能力,会扩展各种各样拖拽反馈效果,因此有必要学习了解,最好学习方式就是实操!...“拖拽”使用!...1.3 DataTransfer 在上述事件类型中,不难发现,放置元素和拖动元素分别绑定了自己事件,可如何拖拽元素和放置元素建立联系以及传递数据?...三、已有拖拽库 目前主流拖拽库有: react-dnd: https://github.com/react-dnd/react-dnd/ react-beautiful-dnd: https://github.com...参考资料 [1]react-dnd - Github: https://react-dnd.github.io/react-dnd/about [2]draggable - MDN: https://developer.mozilla.org

    4.9K30

    做了N+1个企业项目之后, 我总结了这些React必备插件

    UI 移动端组件库 MaterialUI 世界最受欢迎基于质感设计React UI库 React toolbox 一套使用CSS模块功能实现GoogleMaterial Design规范React...desktop 基于ReactJavaScript库,旨在本机桌面体验带入网络,其中包含许多macOS Sierra和Windows 10组件。...AntV 包含 G2、G6、F2、L7 以及一套完整图表使用和设计规范, 提供强大数据可视化需求 G2Plot 基于G2封装开箱即用可视化组件库 recharts 使用React和D3构建自定义图表库...Halogen 使用React加载动画集合 react-move 漂亮,数据驱动React动画,只需3.5kb(gzip) react-spring 一个基于弹簧物理学动画库 Ant Motion...react-beautiful-dnd 漂亮,可移植性 列表拖拽库 react-dnd 可帮助我们构建复杂拖放界面,同时保持组件分离 react-moveable 支持自由拖拽, 缩放, 参考线灵活强大拖拽库

    2K10

    【JS】1724- 重学 JavaScript API - Drag and Drop API

    这里介绍几个常见使用场景: 相册应用中,用户可以拖动图片到不同分组或标签中进行分类; 项目任务管理应用中,用户可以拖动任务卡片进行排序或分组; 文件上传功能中,用户可以文件拖动到指定区域进行上传;...如何使用 使用拖放 API 主要包括以下 3 个步骤: 「定义可拖拽(draggable)元素」:需要拖动元素标记为可拖拽,并指定相应事件处理逻辑。...当拖动任务卡片时: 使用 dragstart 事件任务名称存储在 dataTransfer 对象中; 使用 dragover 事件阻止默认行为并添加视觉反馈; 使用 dragleave 事件移除视觉反馈...Drag and drop so simple it hurts React DnD[9]: 19.3k⭐,适用于 React 强大拖放库。Drag and Drop for React....DnD: https://github.com/react-dnd/react-dnd [10] Vue.Draggable: https://github.com/SortableJS/Vue.Draggable

    27120

    【前端拖拽组件库】最强开源高性能组件库Pragmatic-drag-and-drop简介与分析

    Pragmatic-drag-and-drop已经完成了很多用户设计指南,其中体现了我们希望如何在产品中实现拖放,其中一些决策体现在一些可选包中。当然,也运行可以自由使用喜欢任何设计语言。...Live-Region:向屏幕阅读器用户发送消息助手react-beautiful-dnd-migration:支持从 react-beautiful-dnd 到 Pragmatic 拖放快速迁移三...、性能/功能比较下面我们分别从性能,功能特性,社区,安装包大小,代码块大小,技术架构等卫队对react-beatiful-dnd,react-dnd,@dnd-kit,pragmatic-drag-and-drap...小了7.5倍,代码块也是最小,比react-beatiful-dnd减少了26%,再次体现了它实用性,非常方便前端开发同学们使用,可谓是非常友好。...四、实操教程下面我们根据官网一个实例,学习使用 Pragmatic-drag-and-drop实现一些基本功能,包括可拖放、拖放目标和监视器,我们创建一个带有可拖动棋子棋盘,效果图如下:1.构建可拖动棋子我们第一步是允许棋子被拖动

    2.6K21

    从零搭建一款PC页面编辑器PC-Dooring

    为了保证文章整体逻辑性和条理性, 我将可视化搭建平台具体实现划分为了以下几个部分: PC编辑器效果展示 整体技术架构 可视化搭建技术实现方式 编辑器核心思路 编辑器架构模型 如何开发标准物料组件...image.png 前端框架我们还是使用React, 当然大家也可以使用Vue3.0, 原理都是相通, 不同插件之间也提供了多框架支持....编辑器核心一环就是组件拖拽, 这里笔者使用了社区比较强大且稳定react-dnd, 其拖拽分为两个部分, 一个是从组件区拖拽到画布区, 另一个是画布区内部组件自由拖拽....我们可以用原生H5拖放API来实现第一部分功能, 本质是拖动源携带数据传到画布制定区域, 目标源监听事件拿到携带数据动态渲染出实际组件. 过程如下: ?...image.png 当然深入研究过react-dnd朋友都知道, 以上两个功能通过react-dnd都可以实现, 大家可以参考它官网react-dnd官网学习研究具体实现流程, 也可以直接参考PC-Dooring

    1.8K40

    20个惊艳React组件库,每一个都值得收藏(上)

    通过精心设计动画和反馈效果,它确保用户操作感觉既流畅又自然。 易于使用React Beautiful DND提供了一个简单而强大API,使得实现复杂拖拽逻辑变得简单。...实际应用场景 React Beautiful DND非常适合那些需要提供拖拽排序、列表管理等交互功能应用。无论是任务管理工具、电子邮件客户端,还是内容管理系统,它都能够提供优雅而高效解决方案。...利用React Monaco Editor这个库,你可以轻松地Monaco Editor集成到你React应用中,打造强大代码编辑和展示界面。...为什么选择React Monaco Editor? Monaco Editor集成到React项目中可能会遇到一些挑战,比如编辑器初始化和配置。...on tablet} {isMobile && This is rendered only on mobile} ); } 这个例子展示了如何使用

    1.2K12

    现代 React 开发必备 13 个神库,路由、UI 组件库、拖拽、虚拟列表都齐了

    MUI MUI Core 是一个 React 样式库,可以帮助你很快构建漂亮 UI。...(来源: Material UI) Joy UI: Joy UI 是一个使用 React 构建漂亮设计 UI 组件库,旨在为开发过程带来乐趣。...React DND 现代 React 应用程序很少简单。几乎所有的工业级应用程序都有某种形式拖放功能。 React DND是一个帮助你构建基于拖放功能 React 应用程序库。...如果你应用中使用了大量数据,这个库非常有用。 12. React Suite React Suite是一个企业系统产品 React 组件库集合。这是一个设计缜密并且对开发者友好 UI 框架。...时间花在学习不同目的库上。

    3K30

    总结100+前端优质库,让你成为前端百事通

    「SortableJS」 功能强大 JavaScript 拖拽库 图形/图像处理库 「html2canvas」 一个强大使用 js 开发浏览器网页截图工具 「dom-to-image」 一个可以任意...HTML5 canvas 元素图片编辑器 「merge-images」 一个多张图片合并成一张图 js 插件 「cropperjs」 一款强大图片裁切库, 支持灵活图片裁切方式 「Grade...基于 React JavaScript 库,旨在本机桌面体验带入网络,其中包含许多 macOS Sierra 和 Windows 10 组件。...使用 React 和 D3 构建自定义图表库 Viser 支持多种主流框架可视化库 拖拽/排序 react-beautiful-dnd 漂亮,可移植性 列表拖拽库 react-dnd 可帮助我们构建复杂拖放界面...动画/动效果 Halogen 使用 React 加载动画集合 react-loading 一款基于 react 轻量级加载动画库, 支持按需导入, 开箱即用 react-move 漂亮,数据驱动

    3.2K20

    从零开始实现一个简单低代码编辑器

    而对于我们前端开发者来说,编辑器也是为数不多拥有较深前端技术深度开发场景。 通过本篇文章,你能够学会如何基于 React 技术栈搭建一个最简单低代码编辑器,以及部分重点功能实现方式。...,这里使用react-dndreact官方实现拖拽库,文档参考这里:https://react-dnd.github.io/react-dnd/about 。...在react-dnd中,定义了drag和drop两种类型组件,那么很显然,左侧面板中需要拖拽是drag组件,画布是drop组件。...对于左侧需要拖拽组件,我们使用react-dnd提供useDrag钩子来使其可拖拽,代码如下: // package/client/components/textComponent/index.tsx...大部分工业界编辑器实际上都做了这样一层抽象,对于不同属性编辑组件,会使用schema来描述这个编辑组件可编辑,以及这个编辑所对应可以更改数据。

    1.6K20

    Hooks + TS 搭建一个任务管理系统(八)-- 拖拽功能实现

    一、给看板添加拖拽功能 这一篇文章就只讲一个部分,正如标题所说,添加一个拖拽功能 实现效果像这样 我们实现这个功能采用了一个 react-beautiful-dnd 库,关于这个库可以查看 : npm...hook 来实现这个功能,很难 这里我们通过 if 判断它当前是拖看板还是任务,判断一下是左右还是上下拖拽,通过组件中自带方法计算出放下 id 和拿起来 id 将它插入到这个 kanban 任务中即可...("Text",ev.target.id); } 这里 Text 时我们需要添加到 drag object 中数据类型 在何处放置被拖动数据 默认地,无法数据/元素放置到其他元素中。...该方法返回在 setData() 方法中设置为相同类型任何数据。...被拖数据是被拖元素 id ("drag1") 把被拖元素追加到放置元素(目标元素)中 (参考于菜鸟教程) 可以亲自试一试:在线演示 总结 大概了解了一下如何使用 react-beautiful-dnd

    61530

    回望过去,展望未来- 2024 React 生态一览表

    在A组件基础上,要新增部分功能需求,就需要使用三元运算或者if判断页面的显示逻辑,变支离破碎。...如果给你一个类似的功能需求,想必第一时间想到是利用「组件库」(antd/arco)来完成此项任务。...它提供了 Chart.js 集成到我们 React 应用程序简单方法,使我们能够使用 Chart.js 基本功能创建各种图表和图形。...Recharts[27] 是一个使用 React 构建可组合图表库。它提供了一个简单且灵活 API,用于创建各种类型图表,非常适合数据可视化添加到 React 项目中。...它提供了一种简单且可定制方式来实现重新排序、重新排列或组织用户界面中元素拖放功能。 react-dnd[38]这是一个老牌Dnd库。

    69310

    基于 HTML5 工业互联网云平台监控机房 U 位 顶

    前言 机柜 U 位管理是一突破性创新技术--继承了 RFID 标签(电子标签)优点同时,完全解决了 RFID 技术(非接触式自动识别技术)在机房 U 位资产监控场应用景中四大缺陷,采用工业互联网云平台监控机房...布局结束记得最外层组件最底层 div 添加到 body 中,HT 组件一般都会嵌入 BorderPane、SplitView 和 TabView 等容器中使用,而最外层HT组件则需要用户手工...初始化树 ? 既然布局布好了,就该向具体位置添加内容了。先来看看如何向树上添加节点。...首先我定义了一个初始树上值 treeData,通过遍历这个数组创建树上节点以及节点上父子关系: var treeData = [{ name: 'Racks', type: 8...this.cms.treeView.dm().remove(ld.a('treeNode'));// 移出树上有 treeNode 属性节点 this.gv.dm(

    1.5K30
    领券