首页 程序笔记 react-sortablejs拖拽排序库用法示例

react-sortablejs拖拽排序库用法示例

react-sortablejs 是一个用于实现可拖拽排序功能的 React 组件库。它是基于 SortableJS 库的封装,SortableJS 是一个支持拖拽和排序的 JavaScript 库。

使用 react-sortablejs 可以轻松地在 React 应用程序中实现可拖拽的列表、表格或其他元素的排序功能。

以下是一些 react-sortablejs 的主要特性:

简单易用: react-sortablejs 提供了一个易于使用的 React 组件,可以方便地将其集成到你的项目中。 灵活性: 你可以使用 react-sortablejs 在不同类型的元素(如列表、表格等)上实现拖拽排序。 可配置性: 你可以通过传递一些选项来配置拖拽行为,比如可以设置拖拽时的动画效果、回调函数等。 支持嵌套: react-sortablejs 可以处理嵌套的可排序元素,这意味着你可以在一个排序列表中包含其他可排序的子列表。 事件处理: 提供了一些事件处理函数,可以在拖拽开始、拖拽结束等事件发生时触发自定义的逻辑。 兼容性: 支持移动端和桌面端,可以在不同设备上正常工作。

安装react-sortablejs

npm install --save react-sortablejs
npm install --save-dev @types/sortablejs

# OR
yarn add react-sortablejs sortablejs
yarn add -D @types/sortablejs

以下是一个简单的示例,演示了如何在 React 应用中使用 react-sortablejs:

import React, { FC, useState } from "react";
import { ReactSortable } from "react-sortablejs";

export const BasicFunction = (props) => {
  const [state, setState] = useState([
    { id: 1, name: "shrek" },
    { id: 2, name: "fiona" },
  ]);

  return (
    <ReactSortable list={state} setList={setState}>
      {state.map((item) => (
        <div key={item.id}>{item.name}</div>
      ))}
    </ReactSortable>
  );
};

在上面的示例中,我们创建了一个简单的可排序列表,其中包含了三个 <div> 元素。通过将它们包裹在 Sortable 组件内,并传递一些选项,我们就可以实现拖拽排序的功能。

下面是我在网站中的实际应用,可以通过拖拽的方式为item排序,并且比较灵活,不像有些库只能横着或者竖着排序。

import { useEffect, useState } from 'react';
import Box from '@mui/material/Box';
import { getNavItems } from './../../services/navItemService';
import NavItem from '../../comments/nav-item/NavItem';
import AddNavItem from '../../comments/add-nav-item/AddNavItem';
import { setProgress } from '../../utils/loadingUtil';
import { ReactSortable } from "react-sortablejs";
import './Index.css';

function Index() {
  const [list, setList] = useState([]);
  useEffect(() => {
    fetchData();
    async function fetchData() {
      setProgress(true);
      const result = await getNavItems();
      setList(result);
      setProgress(false);
    }
  }, []);
  return <Box>
    <ReactSortable list={list} setList={setList} className="DraggableTags">
      {list.map((item) => (
        <NavItem key={item.id} item={item}></NavItem>
      ))}
    </ReactSortable>
    <AddNavItem></AddNavItem>
  </Box>;
}

export default Index;

2

站心网

react-sortablejs 是一个用于实现可拖拽排序功能的 React 组件库。它是基于 SortableJS 库的封装,Sortable..

为您推荐

C#中的线程安全的集合ConcurrentQueue使用示例

在多线程编程中,如何安全地在不同线程之间共享数据是一个非常重要的问题。C# 为我们提供了一些专门设计的线程安全集合,其中之一就是 ConcurrentQueue<T>。它是一种先进先出(FIFO)的数据结构,专门为多线程环境设..

CSS砌体布局示例和使用场景

CSS砌体布局(Masonry Layout)CSS砌体布局是一种网页布局技术,它的灵感来源于砖石墙的排列方式,类似于“拼图”或“拼砖”的效果。在砌体布局中,元素的排列并不完全遵循传统的网格布局规则,..

.NET C#中的Func、Predicate和Expression用法详解

在 .NET C# 中,Func、Predicate 和 Expression 是非常常见的委托类型和表达式树,广泛用于函数式编程、数据查询(如 LINQ)以及表达式编译等场景。以下是它们的详细用法和区别。1. FuncFunc 是一个通用委托,用于表..

SQL语句中的EXISTS用法示例

EXISTS 是 SQL 中用于判断子查询是否返回结果的关键字。它通常用于 WHERE 子句中,结合子查询一起使用。如果子查询返回至少一行数据,EXISTS 会返回 TRUE,否则返回 FALSE。EXISTS 用法示例假设有两个表:employees..

冒泡排序和选择排序对比

1、冒泡排序:冒泡排序这种方法的基本思想是,将待排序(未排序序列)的记录看作是竖着排列的“气泡”,键值较小(数值较大)的记录比较轻,从而要往上浮。在冒泡排序算法中要对这个“气泡”序列处理若干遍。所谓一..

小米开源智能家居平台 ha_xiaomi_home 使用示例

小米近期在 GitHub 上开源了名为“ha_xiaomi_home”的项目,即 Home Assistant 米家集成组件。该组件由小米官方支持,旨在让用户在 Home Assistant 中集成和控制小米 IoT 智能设备。主要特点:官方支持:..

ASP.NET MVC最常用的设计模式代码示例

ASP.NET MVC 是一个基于分层架构的框架,其核心架构本身已经实现了 MVC 模式(Model-View-Controller)。除了 MVC 模式,开发者在使用 ASP.NET MVC 开发应用时,通常会结合其他设计模式以提高代码的可维护性、可扩展..

微软官方Microsoft.Extensions.AI库使用示例

Microsoft.Extensions.AI 库介绍Microsoft.Extensions.AI 是一个扩展库,用于在 .NET 应用程序中轻松集成人工智能(AI)服务,例如 OpenAI、Azure OpenAI 和其他支持文本生成或语言模型的 API。通过与 Microsoft.Ext..

.NET C# EntityFramework(EF)连接SQLite代码示例

在.NET C#中使用Entity Framework(EF)连接SQLite数据库是一种常见的做法,可以有效地管理和操作数据。以下是一个简单的示例代码,展示了如何使用EF Core连接到SQLite数据库并执行基本的CRUD操作。首先,确保你已经..

前端js拖拽插件库有哪些?

前端拖拽插件主要包括GoJS、vue.draggable、Vue.Draggable.next、gridster.js、interact.js等。以下是对这些插件的具体介绍:GoJSGoJS官网:https://gojs.netGoJS是一款功能丰富的JavaScript库,主要用于构建流程图..

DockerUI 中文可视化Docker管理工具使用示例

DockerUI 是由国内开发者打造的一款优秀的 Docker 可视化管理工具。该工具拥有简洁直观的UI界面,可以轻松进行Docker主机管理、集群管理,以及Docker任务的编排等操作。DockerUI不仅展示了资源利用率、系统信息和更..

Swapy - 开源JavaScript js拖拽插件

Swapy是一个简单易用的JavaScript工具,能够将任何布局转换为拖拽交换布局。本文将详细介绍Swapy的功能、如何使用它,以及它在实际项目中的应用。什么是Swapy?Swapy是由TahaSh开发的一款开源JavaScript工具。它的核..

高效且灵活的C++库Vince's CSV Parser用法示例

在当今的软件开发中,数据的处理和分析占据了核心地位。而CSV(逗号分隔值)文件格式因其简洁性和广泛的兼容性,成为数据交换的常用格式。然而,处理CSV文件并非易事,尤其是当文件规模庞大或格式复杂时。为了解决这..

C#发送邮件代码简洁示例(附源码下载)

C#发送邮件,主要使用的是System.Net.Mail命名空间下的方法实现,方法很简单,短短十几行代码即可完成发送,具体代码如下。 try { MailMessage myMail = new MailMessage(); myMail.From = new MailAddress..

c# ThreadPool使用方法

ThreadPool类提供一个线程池,该线程池可用于发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。 线程池通过为应用程序提供一个由系统管理的辅助线程池使您可以更为有效地使用线程。一个线程监视排到线程..

Parallel.ForEach和Foreach.For用法

.Net4.0中提供了新的命名空间:System.Threading.Tasks,用于提供并行计算的相关类,这里我主要介绍一个简单的类:Parallel,用于提供对并行循环和区域的支持。 简单来说,Parallel可以把一个普通的for或者foreac..

使用htmlagilitypack+xpath抓取网页内容示例

本文使用htmlagilitypack+xpath抓取网页内容示例,用简单的例子展示如何使用htmlagilitypack抓取网页,可以用来做数据采集等功能。用htmlagilitypack+xpath抓取网页内容示例源码下载首先在nuget中获取htmlagilitypac..

EasyNetQ使用方法示例附源码

使用Nuget安装EasyNetQ本示例源码下载http://www.leavescn.com/Files/downloads/MQTest.zip创建连接:使用EasyNetQ连接RabbitMQ,是在应用程序启动时创建一个IBus对象,并且,在应用程序关闭时释放该对象。RabbitMQ..

.NET Core 日志配置,NLog配置示例

.NET Core内置的日志组件附带了以堆日志提供程序,输出到控制台,输出,系统事件。在Program.cs组件配置里可以配置,如下。Console和Debug是默认配置。publicstaticIHostBuilderCreateHostBuilder(string[]args)=>Ho..

.NET Core SkiaSharp替代System.Drawing的用法

在.NET 6中,微软官方建议把 System.Drawing.Common迁移到SkiaSharp库。因为System.Drawing.Common被设计为Window 技术的精简包装器,因此其跨平台实现欠佳。SkiaSharp是一个基于谷歌的Skia图形库(Skia.org)的用于..

发表回复

返回顶部