更新记录

1.0.0(2025-12-15)

列表 拖拽 排序 禁止拖动 等


平台兼容性

uni-app(4.42)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟

uni-app x(4.42)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

其他

多语言 暗黑模式 宽屏模式
× ×

hf-dragsort

Uni-App 拖拽排序组件,支持禁用项、自定义样式和多平台兼容。

功能特性

  • ✅ 支持拖拽排序
  • ✅ 支持禁用特定项
  • ✅ 支持自定义高度和间距
  • ✅ 支持长按触发(可配置时长)
  • ✅ 支持震动反馈
  • ✅ 适配多平台(H5、小程序、App)
  • ✅ 自动滚动到可视区域
  • ✅ 支持自定义内容插槽

安装方法

方式一:插件市场安装

在 Uni-App 插件市场搜索 hf-dragsort 进行安装。

方式二:本地导入

将插件目录复制到项目的 uni_modulescomponents 目录下。

使用示例

基础用法

<template>
  <view class="container">
    <hf-dragsort
      :list="dataList"
      :height="400"
      :rowHeight="80"
      :rowGap="10"
      @change="handleChange"
      @confirm="handleConfirm"
    >
      <template #default="{ item, index }">
        <view class="item-content">
          <text class="item-index">{{ index + 1 }}</text>
          <text class="item-name">{{ item.name }}</text>
          <u-icon name="arrow-move" size="20" color="#ccc" />
        </view>
      </template>
      <template #shadow="{ item }">
        <view class="shadow-content">{{ item.name }}</view>
      </template>
    </hf-dragsort>
  </view>
</template>

<script setup>
import { ref } from 'vue'

const dataList = ref([
  { id: 1, name: '项目1' },
  { id: 2, name: '项目2' },
  { id: 3, name: '项目3', disabled: true }, // 禁用项
  { id: 4, name: '项目4' }
])

function handleChange(newList) {
  console.log('排序中:', newList)
}

function handleConfirm({ list, from, to }) {
  console.log('排序完成:', list, '从', from, '到', to)
}
</script>

参数说明

参数名 类型 默认值 说明
list Array [] 数据源,每个对象必须包含唯一id
height Number 800 容器高度(单位:rpx)
rowHeight Number 100 行高(单位:rpx)
rowGap Number 10 行间距(单位:rpx)
longTouch Boolean true 是否启用长按触发
longTouchTime Number 300 长按触发时间(单位:ms)
feedback Boolean false 是否启用震动反馈
disabledKey String 'disabled' 禁用项的属性名

事件说明

事件名 说明 回调参数
change 排序过程中触发 newList: Array
confirm 排序完成时触发 { list: Array, from: Number, to: Number }

插槽说明

插槽名 说明 参数
default 列表项内容 { item: Object, index: Number }
shadow 拖拽时的阴影内容 { item: Object }

平台兼容性

平台 支持情况
H5
微信小程序
支付宝小程序
百度小程序
抖音小程序
App (iOS)
App (Android)

注意事项

  1. 数据源中的每个对象必须包含唯一的 id 属性
  2. 禁用项需设置 disabled: true(可通过 disabledKey 自定义属性名)
  3. 建议在 handleConfirm 事件中保存最终排序结果
  4. 长按时长建议设置在 300-500ms 之间,过长影响体验

更新日志

v1.0.0 (2024-01-01)

  • 🎉 初始版本发布
  • ✅ 支持拖拽排序功能
  • ✅ 支持禁用项设置
  • ✅ 支持自定义样式
  • ✅ 多平台兼容

License

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。