React-beautiful-dnd 拖曳组件

是一个支持react的第三方的拖曳组件

DragDropContext 拖曳根容器

用于包裹draggable和droppable的容器组件

拖曳的生命周期钩子函数都在该容器组件上

  • onBeforeCapture 拖动目标捕获之前
  • onBeforeDragStart 拖动开始之前事件
  • onDragStart 拖动开始事件
  • onDragUpdate 拖动中事件
  • onDragEnd 拖动结束事件

注意:必须要onDragEnd 事件,不能自己嵌套自己

Droppable 拖动存放组件

用于包装你需要拖动的Draggable组件,使组件能够被拖拽.

语法格式

import { Droppable } from 'react-beautiful-dnd';<Droppable droppableId="droppable-1" type="PERSON">{(provided, snapshot) => (<divref={provided.innerRef}style={{ backgroundColor: snapshot.isDraggingOver ? 'blue' : 'grey' }}{...provided.droppableProps}><h2>I am a droppable!</h2>{provided.placeholder}</div>)}
</Droppable>;

参数

参数 作用 是否必传 数据类型
droppableId 必要的参数:组件ID string
type 可用于仅接受指定的类。总是从定义它们的继承type。 例如,如果您使用type=“person”,那么它将只允许将类型“person”的放到自身上。type=‘task’的将不能被拖放到type为‘person’的上。如果没有提供类型,它将被设置为“DEFAULT”。 string
isDropDisabled 一个控制列表中的所有拖放是否能够被组合的标志。它将默认为false。 boolean
isCombineEnabled 项目流动的方向。选项有 "vertical" (默认)和 "horizontal" boolean
direction 允许您在<Droppable />上的任何位置放下 string
ignoreContainerClipping boolean
mode standard (默认) or virtual。 用于将列表指定为虚拟列表。虚拟列表模式详情参考官方文档
renderClone 用于在发生拖拽时渲染拖拽<可拖拽/>的克隆(替换)。有关使用细节,请参阅我们的reparenting指南。虚拟列表必须使用克隆。您可以不使用虚拟列表而使用克隆
getContainerForClone 在拖动过程中返回克隆的包含元素(父元素)的函数

子函数

格式:
(provided,snapshot) => (<divref={provided.innerRef}{...provided.droppableProps}>Hello world{provided.placeholder}</div>
)
provided 参数

provided.innerRef :

为了使droppable正确运行,您必须绑定所提供的。innerRef指向ReactElement中尽可能高的DOM节点。这样做是为了避免使用ReactDOM查找DOM节点。

provided.placeholder :

用于在拖动过程中根据需要在< Droppable />中创建空格。当用户拖动非主列表的列表时,需要此空间。请确保将占位符放在您提供ref的组件中。我们需要增加本身的大小。

provided.droppableProps (DroppableProps) :

这是一个包含需要应用于可删除元素的属性的对象。它需要应用到与应用provided.innerRef相同的元素。它目前包含用于样式化和查找的数据属性。

snapshot参数

用于获得拖动临时的快照

参数 作用
isDraggingOver: boolean 拖动是否结束
draggingOverWith: ?DraggableId 拖曳结束在哪
draggingFromThisWith: ?DraggableId 从哪里开始拖曳
isUsingPlaceholder: boolean 是否使用占位符

注意

  • <Droppable />可以作为<Draggable /><DragDropContext />的子组件。
  • <Draggable />必须包含在<Droppable />中,即<Draggable />只能作为<Droppable />的子组件

Draggable 拖动组件

<Draggable /> -用于包装需要拖曳的组件,使组件能够放置

语法格式

import { Draggable } from 'react-beautiful-dnd';<Draggable draggableId="draggable-1" index={0}>{(provided, snapshot) => (<divref={provided.innerRef}{...provided.draggableProps}{...provided.dragHandleProps}><h4>My draggable</h4></div>)}
</Draggable>;

参数

参数 是否必填 数据类型 作用
draggableId string 唯一拖动标识
index string Draggable在列表中的索引(必须唯一;必须连续)
isDragDisabled boolean 默认false,一个可选标志,用于控制是否允许Draggable拖动
disableInteractiveElementBlocking boolean 选择退出以阻止来自交互式元素的拖动的标志
shouldRespectForcePress boolean 拖动手柄是否应遵守强制按动交互

子函数

<Draggable/>的React子节点必须是返回react元素的函数。

语法格式
<Draggable draggableId="draggable-1" index={0}>{(provided, snapshot) => (<divref={provided.innerRef}{...provided.draggableProps}{...provided.dragHandleProps}>Drag me!</div>)}
</Draggable>
provided参数

provided.innerRef
provided.draggableProps
provided.dragHandleProps

snapshot参数
参数 作用
isDragging: boolean 是否在拖动
isDropAnimating: boolean 是否在拖动动画
dropAnimation: ?DropAnimation 拖动动画信息
draggingOver: ?DroppableId
combineWith: ?DraggableId 您要结合的可拖动对象的 id
mode: ?MovementMode 当前拖动的模式

React-beautiful-dnd 拖曳组件相关推荐

  1. React 项目---class 创建组件 (11)

    回顾 function 创建组件 在前面的学习中,我们已经介绍了一种方法来创建组件 利用function,这里我们一起来回顾一下 function Hello(props){return <di ...

  2. React后台管理系统-file-uploader组件

    1.React文件上传组件github地址: https://github.com/SoAanyip/React-FileUpload 2.Util里边新建file-uploader文件夹,里边新建i ...

  3. 如何在React中从其父组件更改子组件的状态

    by Johny Thomas 约翰尼·托马斯(Johny Thomas) 如何在React中从其父组件更改子组件的状态 (How to change the state of a child com ...

  4. [react] 在react中怎样改变组件状态,以及状态改变的过程是什么?

    [react] 在react中怎样改变组件状态,以及状态改变的过程是什么? 使用this.setState改变组件的状态 改变的过程中,React Fiber Reconciler遍历了整个Fiber ...

  5. [react] react怎么拿到组件对应的DOM元素?

    [react] react怎么拿到组件对应的DOM元素? 在Class组件中 import React from 'react'; class CComponent extends React.Com ...

  6. [react] 描述下在react中无状态组件和有状态组件的区别是什么?

    [react] 描述下在react中无状态组件和有状态组件的区别是什么? 1,无状态组件主要用来定义模板,接收来自父组件props传递过来的数据,使用{props.xxx}的表达式把props塞到模板 ...

  7. [react] 写一个react的高阶组件并说明你对高阶组件的理解

    [react] 写一个react的高阶组件并说明你对高阶组件的理解 定义高阶组件 import React, { Component } from 'react';const simpleHoc = ...

  8. [react] 在react中无状态组件有什么运用场景

    [react] 在react中无状态组件有什么运用场景 适用于逻辑简单的纯展示的场景,如资料卡片等 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主 ...

  9. [react] 使用高阶组件(HOC)实现一个loading组件

    [react] 使用高阶组件(HOC)实现一个loading组件 function HOC(wrappedComponent) {return class extends React.Componen ...

最新文章

  1. 面向对象设计:共性VS个性-------继承的粒度和聚合的粒度以及类的重构
  2. 程序猿,如果下次有人让你帮忙开发App,你就这样回答他
  3. oracle ORA-01113的解决方法(file 1 needs media recovery)
  4. 自定义拦截器和提供的拦截器
  5. Learning Collaborative Agents with Rule Guidance for Knowledge Graph Reasoning-学习笔记
  6. 探讨JS合并两个数组的方法
  7. mysql无法启动如何备份文件_mysql 5.7 停电导致无法启动、如何备份数据,重新安装mysql...
  8. 软件测试—软件测试基础知识—(三)软件测试的原则和(四)软件测试策略
  9. 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条...
  10. 【工具相关】iOS-Reveal的使用
  11. 硬核干货:你从普通码农到架构师的封神之路
  12. 机器学习笔记(二):矩阵、环境搭建、NumPy | 凌云时刻
  13. 从零开始学习Java的简单步骤和方法技巧
  14. 通通锁接口调用<Response [400]>报错及python示例代码
  15. HNU数据结构哈夫曼树建立
  16. 网页底部固定版权信息
  17. cglib库Enhancer、Callback的使用
  18. Windows10安装Docker详细步骤
  19. 【记录】ubuntu下安装和部署RAP2
  20. 前端表格插件Jquery DataTable简单汉化

热门文章

  1. 标自然段的序号格式_标自然段和数句子的方法
  2. 利用正则和replace方法 转换日期格式
  3. 显示2012年之前的月份日历代码
  4. VIRTUAL PC 的历史(转)
  5. 怎么彻底卸载html5播放器,爱奇艺万能播放器卸载不了怎么办? 彻底删除爱奇艺万能播放器的教程...
  6. libxml/parser.h not found
  7. android chrome 翻译,你想要的实时翻译!Android版谷歌翻译将增实时转录翻译功能...
  8. MAR与MDR是什么?
  9. Deblurring via Stochastic Refinement (Paper reading)
  10. Mysql----复制