@edorivai/react-smooth-dnd

中文文档
0.11.2发布于 2022/09/08ISCTypeScriptCommonJS近 30 天下载 1.1万

拖放库

中文使用文档
文档目录20 节
  1. 演示页
  2. 安装
  3. 使用量
  4. API 密码
  5. 集装箱
  6. 道具
  7. 在DragStart上开始
  8. 打开
  9. 准备
  10. 打开
  11. 获得儿童付费量
  12. 应 AnimateDrop
  13. 应接受
  14. 在德拉格内
  15. 在德拉格莱夫
  16. 获取鬼父母
  17. 提交
  18. 可拖动
  19. 道具
  20. 提交

这是叉子!

2022年9月8日 纽约

这是叉子 反应- smooth-dnd。这一分叉的唯一目的是扩大提交文件的对应对等依赖 公关#80。如果PR被合并,则不再需要这个分叉.

反应- smooth-dnd

一个快速和轻量级拖放,可排序库用于 React , 包含许多 d&d 方案的许多配置选项 。 它使用 Css 转换动画,所以只要可能,硬件就加速.

此库包含包装器 React 组件 over 平滑倾角 图书馆.

显示,不要告诉!

演示页

安装

npm i @edorivai/react-smooth-dnd

使用量

联合来文十

import React, { Component } from "react";
import { Container, Draggable } from "@edorivai/react-smooth-dnd";

class SimpleSortableList extends Component {
  render() {
    return (
      <div>
        <Container onDrop={this.props.onDrop}>
          {this.props.items.map((item) => {
            return (
              <Draggable key={item.id}>{this.props.renderItem(item)}</Draggable>
            );
          })}
        </Container>
      </div>
    );
  }
}

API 密码

集装箱

包含可拖动元素或组件的组件。 每一个儿童都应该受到 可拖动 组件

道具

财产类型默认说明
儿童可拖动无效反应儿童道具。 应该是类型 可拖动。 。 。 .
方向字符串vertical集装箱的方向。 可能会 水平 或者说 垂直。 。 。 .
行为字符串move用于描述天气的属性 拖曳项将被移动或复制到目标容器中 。 如果设置了空投区, 当容器被拖过时不会拖动 。 可能会 移动 或者说 复制 或者说 空投区 或者说 包含
组Name字符串undefined可在同一组名的容器之间移动可拖放设备。 如果不设置容器, 将不接受外部拖放 。 这种行为可以被shouldAceptDrop函数所取代. 见下文.
锁定轴字符串undefined锁定拖动轴 。 可能值为 页:1, (中文(简体) ), 尔 或者说 未定义。 。 。 .
拖动手持选择器字符串undefined要测试允许拖曳的 Cs 选择器 。 如果没有指定项目,则可以从其边界的任何地方抓取.
非垃圾区选择器字符串undefined防止拖曳的 Cs 选择器 。 当您在可拖动的项目内有窗体元素或可选择的文本时, 可能有用 。 它有优于 拖动手持选择器。 。 。 .
拖曳 Begin 延迟编号0 (单位:千美元)200 (用于触摸设备)时间在微秒。 按下项目后拖放延迟 。 在延迟前移动光标会取消拖曳 .
动画期限编号250动画持续时间为milisecond. 为了保持一致,这一动画持续时间将适用于投放和重排动画.
自动滚动布尔true如果拖曳项接近边框, 首个可滚动父将自动滚动 .
拖动分类字符串undefined被拖走的鬼东西中要加入的等级. 该类在被加入到DOM之后会被添加,因此该类中的任何过渡都会如愿以偿.
滴入分类字符串undefined在投放动画开始前,要加入到"鬼"项目中.
删除关闭布尔undefined当在 Drop 上设定为真时, 如果您将元素从任何相关的容器中丢出, 将会使用已删除的Index 调用
滴入标记符布尔, 对象undefined空出占位符的选项 . 类Name, (中文(简体) ), 动画期限, (中文(简体) ), 显示 Top
在DragStart上开始函数undefined见下文说明
打开函数undefined见下文说明
准备函数undefined见下文说明
打开函数undefined见下文说明
获得儿童付费量函数undefined见下文说明
应 AnimateDrop函数undefined见下文说明
应接受函数undefined见下文说明
在德拉格内函数undefined见下文说明
在德拉格莱夫函数undefined见下文说明
获取鬼父母函数undefined见下文说明
提交函数undefined见下文说明

在DragStart上开始

拖曳开始时要被所有容器调用的函数 .

function onDragStart({isSource, payload, willAcceptDrop}) {
  ...
}

参数

  • 来源 数字 : boolean : 如果它被拖曳的容器所调用, 则它是真实的.
  • 有效载数 数字 : object :通过GetChildPayload函数返回的有效载荷物体。 如果未设定 ChildPayload , 它将被取消定义 .
  • 将接受Drop 数字 : boolean :如果被拖走的物品可以被扔入容器,则属实,否则是假的.

打开

当拖曳结束时, 所有容器都要调用函数 。 以前打电话过 打开 函数

function onDragEnd({isSource, payload, willAcceptDrop}) {
  ...
}

参数

  • 来源 数字 : boolean :如果它被拖动开始的容器所叫,则真实性,否则是虚假的.
  • 有效载数 数字 : object :通过GetChildPayload函数返回的有效载荷物体。 如果未设定 ChildPayload , 它将被取消定义 .
  • 将接受Drop 数字 : boolean :如果被拖走的物品可以被扔入容器,则属实,否则是假的.

准备

当容器中可能掉落位置的索引改变时, 被拖放的容器将调用的函数 。 基本上,每次在容器幻灯片中为被拖走的项目打开一个空格时,都会称之为拖放. 滴出结果 是传递给包含以下属性的函数的唯一参数.

function onDropReady(dropResult) {
  const { removedIndex, addedIndex, payload, element } = dropResult;
  ...
}

参数

  • 滴出结果 数字 : object
    • 删除 指数 数字 : number : 被带走儿童指数。 将会是 null 如果没有任何物品被移除.
    • 已添加 指数 数字 : number : 添加已丢弃项目的索引。 将会是 null 如果没有增加项目.
    • 有效载数 数字 : object : 通过调用检索的有效载荷物体 获得儿童付费量 函数.
    • 元素 数字 : DOMElement : 移动的 DOM 元素

打开

任何相关容器在投放完毕时调用功能 。 (倒下动画结束后). 源容器和任何可接受滴水的容器都被认为是相关的. 滴出结果 是传递给包含以下属性的函数的唯一参数.

function onDrop(dropResult) {
  const { removedIndex, addedIndex, payload, element } = dropResult;
  ...
}

参数

  • 滴出结果 数字 : object
    • 删除 指数 数字 : number : 被带走儿童指数。 将会是 null 如果没有任何物品被移除.
    • 已添加 指数 数字 : number : 添加已丢弃项目的索引。 将会是 null 如果没有增加项目.
    • 有效载数 数字 : object : 通过调用检索的有效载荷物体 获得儿童付费量 函数.
    • 元素 数字 : DOMElement : 移动的 DOM 元素

获得儿童付费量

使有效载荷物体通过所需的函数 打开 函数.

function getChildPayload(index) {
  return {
    ...
  }
}

参数

  • 指数 数字 : number : 儿童项目索引

回返

  • 有效载数 数字 : object

应 AnimateDrop

被拖放项目将降入的目标容器所调用的函数 . 有时被拖走的物品的尺寸与目标容器不相适应,而投放动画可以发抖. 这样它就可以通过返回被禁用 虚假。如果没有设置投放动画,则启用.

function shouldAnimateDrop(sourceContainerOptions, payload) {
  return false;
}

参数

  • 源文件夹选项 数字 : object :源容器的选项。 (被拖走物品的上方容器)
  • 有效载数 数字 : object : 通过调用检索的有效载荷物体 获得儿童付费量 函数.

回返

  • 布尔 数字 : 真/ 假

应接受

拖放前所有容器的调用功能开始确定可能投放的容器. 设置此函数将覆盖 组Name 属性,只考虑此函数的返回值.

function shouldAcceptDrop(sourceContainerOptions, payload) {
  return true;
}

参数

  • 源文件夹选项 数字 : object :源容器的选项。 (被拖走物品的上方容器)
  • 有效载数 数字 : object : 通过调用检索的有效载荷物体 获得儿童付费量 函数.

回返

  • 布尔 数字 : 真/ 假

在德拉格内

当被拖取的物品在拖取时进入其边界时,该函数将被相关容器调用.

function onDragEnter() {
  ...
}

在德拉格莱夫

当被拖放的物品在拖放时离开其界限时,由相关容器调用功能.

function onDragLeave() {
  ...
}

获取鬼父母

要获取被拖走的幽灵会被附加的元素的函数 。 默认母元素是容器本身. 幽灵元素被定位为"固定"并附在给定的父元素上. 但是,如果任何容器的内脏有变换属性,鬼元将相对于打破计算结果的元素定位. 因此,如果集装箱中有任何改变的母元素,您应当设置此属性,以便返回未改变母元素的任何元素.

function getGhostParent() {
  // i.e return document.body;
}

提交

默认情况下, Control 对组件根使用 div 元素 。 您可以通过使用 提交 函数。 如果渲染函数被设定, 儿童 集装箱道具将被忽略,并使用渲染物的还原值来制造可拖动物.

function render(ref) {
  // return ReactElement
}

参数

  • 参考 数字 : object : 反应引用对象 React.create Ref () 创建参考文献

回返

  • 反应元素
<Container
  render={(ref) => {
    return (
      <ul ref={ref}>
        ...place your <Draggable /> components here
      </ul>
    );
  }}
/>

可拖动

集装箱儿童包装部件。 每个可拖动的元素都应该用 可拖动 组件.

确保设置唯一的密钥到 可拖动 特别是当它包含其他 集装箱 组件

道具

财产类型默认说明
提交函数undefined见下文说明

提交

默认 Draggable 对组件根使用 div 元素 。 您可以通过使用 提交 函数。 如果渲染函数被设定, 儿童 将忽略可拖放的道具,并将使用渲染的还原值来使可拖放.

<Draggable
  render={() => {
    return <li>...</li>;
  }}
/>

参数

  • 参考 数字 : object : 反应引用对象 React.create Ref () 创建参考文献

回返

  • 反应元素

版本与发布记录

@edorivai/react-smooth-dnd 共发布 1 个版本,首次发布于 2022/09/08;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.11.2latest2022/09/084 年前

关于 @edorivai/react-smooth-dnd 的常见问题

@edorivai/react-smooth-dnd 是什么?

拖放库

如何安装 @edorivai/react-smooth-dnd?

在项目目录运行 npm install @edorivai/react-smooth-dnd,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=16.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@edorivai/react-smooth-dnd 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@edorivai/react-smooth-dnd 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@edorivai/react-smooth-dnd 可以商用吗?

@edorivai/react-smooth-dnd 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@edorivai/react-smooth-dnd 的下载量有多少?

根据 npm 官方下载统计,@edorivai/react-smooth-dnd 在 2026/10/13 – 2026/11/11 这 30 天内被下载 10,692 次,日均约 356 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@edorivai/react-smooth-dnd 还在维护吗?

最新版本 0.11.2 发布于 2022/09/08(4 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/09/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。