react + ts + react-beautiful-dnd使用

在这里插入图片描述

react-beautiful-dnd --=- 新版拖拽组件
最近项目需求,开始玩起react。 一遍遍骂自己太菜,一遍遍告诉自己老子最棒! 这项目有个需求是拖动,本以为拖动能有多难,插件满天飞,不在怕的,but, 现实告诉我那必不可能,那需求是真麻烦噢!
选来选去,最后选择了这个 react-beautiful-dnd 插件
但发现这个插件的文档是真的简洁噢。没办法,自己摸索吧,根据我自己摸得,我现在整理了一下使用方法,给以后的人使用点个灯点个灯!哈哈哈

play demo


git地址


官方demo
demo程序启动执行命令: yarn storybook

API

名称 中文名 作用
DragDropContext 拖拽上下文 包装拖拽根组件,Draggable和Droppable都需要包裹在内
Droppable 可放置组件 包装你需要拖动的组件,使组件能够被拖拽(包裹可放置组件)
Draggable 拖拽上下文 包装接收拖拽元素的组件,使组件能够放置(包裹可拖拽组件)

在这里插入图片描述

Droppable参数

字段 含义
droppableId 唯一标识id,必要的参数
isDropDisabled 一个控制列表中的所有拖放是否能够被组合的标志。它将默认为false
direction 项目流动的方向。选项有 "vertical" (默认)和 "horizontal"
ignoreContainerClipping 当< Droggable />在一个可滚动容器内,它的区域是受限制的,
所以你只能在< Droggable />的部分上看到。
设置此道具可以避免这种行为,允许您在< Droggable />上的任何位置放下,即使它在视觉上被可滚动的父元素隐藏。默认的行为适用于大多数情况,所以你可能永远不需要使用这个道具,
但是如果你有很长的< Droggable />在一个短滚动容器中,它会很有用。请记住,如果在同一页面上的滚动容器中有多个< Droggable />,则可能会导致一些意想不到的行为。

Draggable参数

字段 含义
draggableId 拖拽源头 (唯一标识)
index 它与Draggable的顺序相匹配在Droppable里面. 它只是简单的索引
isDragDisabled 默认false,一个可选标志,用于控制是否允许Draggable拖动
source 可放置组件
source.index 拖拽index下标
destination 当前目标位置(目的地)
destination.index 位于可扔的index下标

Draggable子函数的provided参数

字段 含义
provided.innerRef innerRef:获取ref funtion组件是ref,class组件是innerRef
为了使< Draggable />正确运行,必须将innerRef函数绑定到ReactElement,您希望将其视为< Draggable />节点。这样做是为了避免使用ReactDOM查找DOM节点
provided.draggableProps 一个包含数据属性和内联样式的对象。
此对象需要应用于将innerRef应用于的同一节点。
它控制可拖动控件在拖动和不拖动时的移动。
欢迎您添加自己的样式到DraggableProps-style -但请不要删除或替换任何属性
iprovided.dragHandleProps用来拖动整个< Draggable />的。绑定在真正想要拖拽的组件上,
此时我们需要做一个可拖拽排序的列表,(比如顶图所演示的) 但只能拖拽左上角的人头,其他的地方不拖拽,那只需要在想要拖拽的组件上添加上{...provided.dragHandleProps}即可
placeholder占位符,放置在function根节点内部的最下面

Draggable子函数的snapshot参数:此为快照

// snapshot in <Draggable/>
const draggableSnapShot = {
  isDragging: true,
  draggingOver: 'column1'		// 拖拽穿过的可放置组件id即 droppableId
}

// snapshot in <Droppable/>
const droppableSnapShot = {
  isDraggingOver: true,
  draggingOverWith: 'task1'	// 正被拖拽穿过我的拖拽组件id即 draggableId
}


对于可拖拽的组件来说,它被拖拽时关心的是经过了哪些被放置的组件

对于可放置的组件来说,它关心的是经过了哪些可拖拽组件被拖拽经过

如果还不能理解
那么我下面写的demo
你多看几遍尝试一下就理解了

我把demo单独放到另一篇
闪送去DEMO

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
react-beautiful-dnd是一个用于实现拖放功能的React库。它提供了一个优雅的方式来实现复杂的拖放交互,并且在性能方面也表现出色。 官方示例展示了如何在React使用react-beautiful-dnd来创建一个基本的拖放列表。该示例使用两个列表,左侧列表中有一些颜色方块,右侧列表为空。 首先,我们需要引入所需的库和组件。然后,在页面上创建两个容器,一个用于左侧列表,一个用于右侧列表。接下来,我们需要定义一个状态来存储列表项的数据。在示例中,数据是一个包含颜色方块的数组。我们还需要定义一个函数来处理列表项的拖动和放置操作。 然后,我们可以使用react-beautiful-dnd提供的DragDropContext组件来包裹整个应用,并将其附加到页面的根元素上。这样可以确保拖放操作在整个应用中生效。 接下来,我们需要在左侧列表容器中渲染颜色方块列表,并使用Draggable组件对每个方块进行包装。我们还需要在Draggable组件上设置一个唯一的ID,并使用DragHandleProps和DraggableProps来传递拖动和放置操作的属性。 最后,我们需要在右侧列表容器中渲染一个Droppable组件,以表示可以将颜色方块拖放到其中。并且,我们需要在Droppable组件使用DroppableProps来传递拖放操作的属性。 通过以上步骤,我们就可以创建一个简单的拖放列表。当我们拖动一个颜色方块时,react-beautiful-dnd会自动处理其它方块的重新排序和位置更新。同时,我们还可以添加一些自定义的逻辑来实现更复杂的拖放交互效果。 总之,react-beautiful-dnd官方示例展示了如何使用这个库来创建一个基本的拖放列表。通过这个示例,我们可以学习到如何在React使用react-beautiful-dnd,并了解其强大的拖放功能和灵活的配置选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值