【亲测免费】 React-Sortablejs 技术文档
2026-01-25 04:55:01作者:何将鹤
React-Sortablejs 是一个用于集成 SortableJS 的 React 组件库,它使您能够在 React 应用程序中轻松实现拖放排序功能。以下是对该库的详细概述,包含安装指南、使用说明、API 介绍以及示例。
安装指南
要将 React-Sortablejs 集成到您的项目中,首先需要安装必要的依赖:
npm install --save react-sortablejs sortablejs
npm install --save-dev @types/sortablejs
# 若使用 Yarn,则执行:
yarn add react-sortablejs sortablejs
yarn add -D @types/sortablejs
请注意,sortablejs 和 @types/sortablejs 作为同级依赖管理,特别是在需要类型定义时。
项目使用说明
基础使用
React-Sortablejs 允许您通过简单的组件包裹来实现列表的排序。
函数式组件示例
import React, { FC, useState } from "react";
import { ReactSortable } from "react-sortablejs";
interface ItemType {
id: number;
name: string;
}
export const BasicFunction: FC = () => {
const [state, setState] = useState<ItemType[]>([
{ 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>
);
};
类组件示例
如果您偏好类组件,也可以这样使用:
import React, { Component } from "react";
import { ReactSortable } from "react-sortablejs";
interface BasicClassProps {}
interface BasicClassState {
list: { id: string; name: string }[];
}
export class BasicClass extends Component<BasicClassProps, BasicClassState> {
state = {
list: [{ id: "1", name: "shrek" }],
};
render() {
return (
<ReactSortable list={this.state.list} setList={this.setState.bind(this)}>
{this.state.list.map(item => (
<div key={item.id}>{item.name}</div>
))}
</ReactSortable>
);
}
}
插件使用
SortableJS 提供了如 MultiDrag 和 Swap 等插件,可在 React-Sortablejs 中启用它们:
import React from "react";
import { ReactSortable, Sortable, MultiDrag, Swap } from "react-sortablejs";
Sortable.mount(new MultiDrag(), new Swap());
const PluginApp = () => {
// 使用插件特性,例如 multiDrag 或 swap
};
Sortable API
React-Sortablejs 直接支持 SortableJS 的大部分选项,可通过属性形式应用:
const AppWithOptions = () => {
const [state, setState] = useState(...);
return (
<ReactSortable
group="myGroup"
animation={150}
delay={100}
>
{/* 清单 */}
</ReactSortable>
);
};
React-Specific API
list: 接收状态数组,映射为列表项。setList: 更新列表的状态,类似于 useState 的更新函数。tag: 默认为div,可以设置为任何 HTML 标签或通过forwardRef创建的自定义组件。
注意事项
- 不要使用索引作为列表项的 key,以避免排序后的问题。应使用唯一标识符(如 id)。
- 当涉及到嵌套排序时,可能会遇到更新状态的挑战,尽量避免同一层次间移动元素导致的双状态更新。
通过遵循这些指导原则,您可以有效地在您的 React 项目中集成并利用 React-Sortablejs 来创建交互式的拖放排序列表。
登录后查看全文
热门项目推荐
相关项目推荐
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C0134
let_datasetLET数据集 基于全尺寸人形机器人 Kuavo 4 Pro 采集,涵盖多场景、多类型操作的真实世界多任务数据。面向机器人操作、移动与交互任务,支持真实环境下的可扩展机器人学习00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python059
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
AgentCPM-ReportAgentCPM-Report是由THUNLP、中国人民大学RUCBM和ModelBest联合开发的开源大语言模型智能体。它基于MiniCPM4.1 80亿参数基座模型构建,接收用户指令作为输入,可自主生成长篇报告。Python00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
501
3.66 K
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
11
1
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
66
20
暂无简介
Dart
748
180
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
870
490
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
318
134
仓颉编译器源码及 cjdb 调试工具。
C++
150
882
React Native鸿蒙化仓库
JavaScript
298
347