React-beautiful-dnd 拖曳组件
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 拖曳组件相关推荐
- React 项目---class 创建组件 (11)
回顾 function 创建组件 在前面的学习中,我们已经介绍了一种方法来创建组件 利用function,这里我们一起来回顾一下 function Hello(props){return <di ...
- React后台管理系统-file-uploader组件
1.React文件上传组件github地址: https://github.com/SoAanyip/React-FileUpload 2.Util里边新建file-uploader文件夹,里边新建i ...
- 如何在React中从其父组件更改子组件的状态
by Johny Thomas 约翰尼·托马斯(Johny Thomas) 如何在React中从其父组件更改子组件的状态 (How to change the state of a child com ...
- [react] 在react中怎样改变组件状态,以及状态改变的过程是什么?
[react] 在react中怎样改变组件状态,以及状态改变的过程是什么? 使用this.setState改变组件的状态 改变的过程中,React Fiber Reconciler遍历了整个Fiber ...
- [react] react怎么拿到组件对应的DOM元素?
[react] react怎么拿到组件对应的DOM元素? 在Class组件中 import React from 'react'; class CComponent extends React.Com ...
- [react] 描述下在react中无状态组件和有状态组件的区别是什么?
[react] 描述下在react中无状态组件和有状态组件的区别是什么? 1,无状态组件主要用来定义模板,接收来自父组件props传递过来的数据,使用{props.xxx}的表达式把props塞到模板 ...
- [react] 写一个react的高阶组件并说明你对高阶组件的理解
[react] 写一个react的高阶组件并说明你对高阶组件的理解 定义高阶组件 import React, { Component } from 'react';const simpleHoc = ...
- [react] 在react中无状态组件有什么运用场景
[react] 在react中无状态组件有什么运用场景 适用于逻辑简单的纯展示的场景,如资料卡片等 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主 ...
- [react] 使用高阶组件(HOC)实现一个loading组件
[react] 使用高阶组件(HOC)实现一个loading组件 function HOC(wrappedComponent) {return class extends React.Componen ...
最新文章
- 面向对象设计:共性VS个性-------继承的粒度和聚合的粒度以及类的重构
- 程序猿,如果下次有人让你帮忙开发App,你就这样回答他
- oracle ORA-01113的解决方法(file 1 needs media recovery)
- 自定义拦截器和提供的拦截器
- Learning Collaborative Agents with Rule Guidance for Knowledge Graph Reasoning-学习笔记
- 探讨JS合并两个数组的方法
- mysql无法启动如何备份文件_mysql 5.7 停电导致无法启动、如何备份数据,重新安装mysql...
- 软件测试—软件测试基础知识—(三)软件测试的原则和(四)软件测试策略
- 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条...
- 【工具相关】iOS-Reveal的使用
- 硬核干货:你从普通码农到架构师的封神之路
- 机器学习笔记(二):矩阵、环境搭建、NumPy | 凌云时刻
- 从零开始学习Java的简单步骤和方法技巧
- 通通锁接口调用<Response [400]>报错及python示例代码
- HNU数据结构哈夫曼树建立
- 网页底部固定版权信息
- cglib库Enhancer、Callback的使用
- Windows10安装Docker详细步骤
- 【记录】ubuntu下安装和部署RAP2
- 前端表格插件Jquery DataTable简单汉化
热门文章
- 标自然段的序号格式_标自然段和数句子的方法
- 利用正则和replace方法 转换日期格式
- 显示2012年之前的月份日历代码
- VIRTUAL PC 的历史(转)
- 怎么彻底卸载html5播放器,爱奇艺万能播放器卸载不了怎么办? 彻底删除爱奇艺万能播放器的教程...
- libxml/parser.h not found
- android chrome 翻译,你想要的实时翻译!Android版谷歌翻译将增实时转录翻译功能...
- MAR与MDR是什么?
- Deblurring via Stochastic Refinement (Paper reading)
- Mysql----复制