npm包@joaomosmann/react-dnd-touch-backend的使用教程

在前端开发中,拖放(Drag-and-Drop)是一个非常常见的交互行为。而DnD API是浏览器原生支持的,在React开发中,我们可以使用React DnD库来方便地实现拖放。不过,React DnD目前在移动端的支持不够完善,特别是对于触摸屏的支持还比较薄弱。

近期发现npm包@joaomosmann/react-dnd-touch-backend支持移动端的拖放,本文将介绍如何使用该npm包实现移动端拖放。

安装

在终端中运行以下命令:

--- ------- ------ ------------------------------------

用法

在React组件中引入与设置:

------ ----- ---- -------
------ - ----------- - ---- -----------
------ - ------------ - ---- --------------------------------------

----- ------------- - -- -- -
  ------ -
    ------------ -----------------------
      --- ---- ---
    --------------
  -
-

------ ------- -------------

通过引入DndProviderTouchBackend,我们为项目启用了移动端拖放。

使用TouchBackend参数

TouchBackend需要传入一些配置参数:

  • enableMouseEvents: 当设置为true时,可以在移动设备的浏览器中模拟鼠标事件。默认是false

  • delayTouchStart: 滑动开始前延迟的毫秒数。默认是100毫秒。

  • delayMouseStart: 拖拽对象被移动时延迟的毫秒数。默认是0毫秒。

  • delayTouchHold: 长按持续时间。默认是500毫秒。

  • scrollableAncestor: 滚动条父元素。默认是文档元素。

  • ignoreContextMenu: 是否忽略右键单击事件。默认是true

  • enableKeyboardEvents: 是否启用键盘事件。默认是false

  • touchSlop: 触摸偏移量。默认是10像素。

例如:

-------------
  ------------------------
  ---------------------
  --------------------
--

已知问题

目前React DnD在移动端的实现还有很多的问题,例如无法支持组合拖放等。这个npm包也有自己的问题。

当设置了delayTouchHold参数时,用户拖拽会生成一个占位符,当占位符移动过程中拖拽解除时,占位符可能会停留在原地,需要在占位符上添加onDragEnd事件,把占位符位置重置为初始位置,解决上述问题。示例如下:

------ ------ - -------- - ---- -------
------ - -------- ------- - ---- -----------

----- ---------------------- - -- -- -- -- -
  ----- -- ---------- -- ----- - ---------
    ----- - --- ----- --------------------- --
    -------- --------- -- -- ----------- -------------------- --
  --

  ----- -- ----- - ---------
    ------- ----------------------
    ------ -- -- -
      -- -- ---------
    -
  --

  ----- ------- --------- - ------------

  ----- --------- - -- -- -
    ------------
  -

  ------ -
    ---- ---------- --------------
      -------------
    ------
  -
-

------ ------- ----------------------

在上述代码示例中,我们在div上添加了ref={drag},以使用useDrag方法向组件添加拖拽功能。

通过使用useDrop方法,将拖拽元素的接受类型设置为YOUR_DRAGGABLE_TYPE

我们在组件中添加onDragEnd事件,以实现拖动结束后的处理。在事件中,我们通过调用setStyle({})方法将原占位符重置为初始位置。

结语

本文介绍了npm包@joaomosmann/react-dnd-touch-backend,该npm包可以方便地在React DnD中实现移动端拖放功能。对于移动端拖放的支持,React DnD还有很多问题需要解决,这也是我们需要深入探讨的地方。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005601281e8991b448de114


猜你喜欢

  • npm 包 symfony-serializer 使用教程

    在前端开发中,数据序列化是非常常见的操作,而 Symfony Serializer 是一个优秀的 PHP 库,为开发者们提供了数据序列化的强大功能。而在前端开发中,我们同样可以轻松地通过 npm 包来...

    3 年前
  • npm 包 syntaximprovement 使用教程

    如果你是一名前端开发人员,你必然知道在开发过程中经常需要使用到各种不同的工具和组件。其中,npm 包是前端开发中使用最广泛的资源之一。 在这篇文章中,我们将向大家介绍一款名为 syntaximprov...

    3 年前
  • npm 包 maptalks-rollup-plugin-alias 使用教程

    简介 maptalks-rollup-plugin-alias 是一个 Rollup 插件,为使用 Maptalks 库进行开发的前端项目提供了别名和映射的支持。这个插件的作用是提高前端项目的可维护性...

    3 年前
  • npm 包 node-memcached 使用教程

    简介 node-memcached 是一个基于 Node.js 的 memcached 客户端库,它提供了 memcached 的基本操作。本文将详细介绍如何使用 node-memcached 包。

    3 年前
  • npm 包 vue-element-multiple-rate 使用教程

    在前端开发中,我们常常需要使用到评分组件,但是常见的评分组件都只能设置单个星星的数量,无法满足需要设置多个星星的需求。vue-element-multiple-rate 是一个可以快速实现多个星星评分...

    3 年前
  • npm 包 lss.base.css 使用教程

    在前端开发中,样式表是不可或缺的一部分。而 lss.base.css 是一款非常实用的样式库,其中包含了一些基础的样式,可以让开发者快速搭建页面。在本篇文章中,我们将详细介绍 lss.base.css...

    3 年前
  • npm 包 ng-fones 使用教程

    前言 ng-fones 是一个基于 Angular 框架的 UI 组件库,它提供了一系列常用的 UI 组件,如按钮、表单、模态框等,它的组件风格简约明了,易于使用,且易于扩展和定制化。

    3 年前
  • NPM 包 rollup-plugin-userscript-css 使用教程

    在前端开发中,经常需要将多个 CSS 文件打包成一个文件,以减少 HTTP 请求次数,提高网页的性能。而 rollup-plugin-userscript-css 是一个 npm 包,可以帮助我们实现...

    3 年前
  • npm 包 vue-element-multiple-notification 使用教程

    在前端开发中,通知消息(Notification)是非常重要的一部分,不仅可以帮助用户快速了解应用程序的状态,还可以提高应用程序的交互性。如果您正在寻找一种简单且易于使用的通知消息解决方案,那么您可以...

    3 年前
  • npm 包 react-native-promptpay-qr 使用教程

    在使用 React Native 开发移动应用时,我们经常需要使用支付二维码来完成在线支付或转款功能。本文介绍了一个 React Native 的 npm 包叫做 react-native-promp...

    3 年前
  • npm 包 kognitio 使用教程

    介绍 kognitio 是一个基于 React Native 和 Redshift 开发的数据可视化工具,它能够直观地展示数据,帮助用户深入理解数据背后的含义。kognitio 的前端部分已经被封装成...

    3 年前
  • npm 包 nowjs-node-core 使用教程

    简介 nowjs-node-core 是一个在 Node.js 环境下运行的轻量级 Websocket 库。它允许开发者使用简单的 API 实现实时通信功能。通过该库,可以轻松地实现基于 Websoc...

    3 年前
  • npm 包 rgui-ui-chart 使用教程

    简介 rgui-ui-chart 是一个基于 React 的 UI 组件库,用于展现各种图标类型的数据。 该库提供了多种常见的图表类型,包括折线图、柱状图、饼图等,可以非常方便地在 React 应用中...

    3 年前
  • npm 包 vue-element-multiple-message 使用教程

    在前端开发中,消息提示是非常常见的功能之一。vue-element-multiple-message 是一个基于 Vue 框架和 Element UI 组件库的消息提示组件,可以实现多个消息提示同时展...

    3 年前
  • npm 包 Vue-Element-Multiple-Icon 使用教程

    Vue-Element-Multiple-Icon 是一款 Vue.js 的图标库,提供了多个可配置的图标。使用该图标库可以方便地在 Vue.js 项目中使用高质量的图标。

    3 年前
  • npm包 adonis-geojson-validator使用教程

    简介 GeoJSON是一种常用的地图数据格式,但是在数据处理过程中往往需要进行格式验证。Adonis-geojson-validator是一个基于Node.js的npm包,可以用于验证GeoJSON对...

    3 年前
  • npm 包 ycs-plugin-rolesmanager 使用教程

    前端开发人员在创建应用程序时,通常需要在应用程序中针对不同用户类型设置相应的角色和权限。这意味着为了管理这些角色和权限,我们需要使用一些工具和技术。 在本文中,我们将介绍一个非常流行和有用的 npm ...

    3 年前
  • npm 包 nut-json 使用教程

    在前端开发中,处理数据是非常重要的一项工作。而处理 JSON 数据是其中的一个重要环节。json 是一种轻量级数据交换格式,一般用于前后端数据交互。在 JavaScript 中,可以轻松地将 JSON...

    3 年前
  • NPM 包 Nut-Parser 使用教程

    简介 nut-parser 是一个 JavaScript 包,用于处理字符串,特别是像时间和数字这样的数据。nut-parser 几乎可以处理来自任何语言的日期、时间和数字格式,并将它们转换为 Jav...

    3 年前
  • npm 包 typis 使用教程

    在前端开发中,我们经常需要对数据类型进行操作和判断。JavaScript 是一门动态弱类型语言,虽然这种语言特性使得开发变得更加灵活和便捷,但也在一定程度上增加了类型问题的出现频率。

    3 年前

相关推荐

    暂无文章