更新记录

1.0.0(2025-04-07) 下载此版本

  • 支持触摸拖拽排序
  • 支持Vue 2和Vue 3
  • 内置默认列表项渲染样式
  • 支持完全自定义列表项内容
  • 提供拖拽开始、结束和变化事件
  • 拖拽过程中提供操作提示信息
  • 支持长按才能拖拽的模式

平台兼容性

HbuilderX/cli最低兼容版本
3.96

uni-app

Vue2 Vue3
?
app-vue app-nvue app-android app-ios app-harmony
? ? ? ? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?
微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序 钉钉小程序 快手小程序 飞书小程序 京东小程序
? ? ? ? ? ? ? ? ?
快应用-华为 快应用-联盟
? ?

uni-app x

app-android app-ios
? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?

XL Drag List - 拖拽列表组件

在线演示地址:https://xlandzxg-8gj5901i764f06f7-1308786497.tcloudbaseapp.com/index.html#/ 一个可拖拽排序的列表组件,支持自定义列表项内容,适用于各种需要拖拽排序的场景。

特性

  • 支持触摸拖拽排序
  • 支持Vue 2和Vue 3
  • 内置默认列表项渲染样式
  • 支持完全自定义列表项内容
  • 提供拖拽开始、结束和变化事件
  • 拖拽过程中提供操作提示信息
  • 支持长按才能拖拽的模式

安装

将组件文件夹复制到你的uni-app项目的components目录中即可。

使用方法

基础用法

Vue 3 组合式API写法

<template>
  <!-- 使用默认渲染 -->
  <xl-drag-list v-model:list="myList"></xl-drag-list>
</template>

<script setup>
import { ref } from 'vue';
import XlDragList from '@/components/xl-drag-list/index.vue';

const myList = ref([
  { id: 1, title: '项目一', desc: '这是第一个项目' },
  { id: 2, title: '项目二', desc: '这是第二个项目' },
  { id: 3, title: '项目三', desc: '这是第三个项目' },
]);
</script>

Vue 2 选项式API写法

<template>
  <!-- 使用默认渲染 -->
  <xl-drag-list :list="myList" @update:list="updateList"></xl-drag-list>
</template>

<script>
import XlDragList from '@/components/xl-drag-list/index.vue';

export default {
  components: {
    XlDragList
  },
  data() {
    return {
      myList: [
        { id: 1, title: '项目一', desc: '这是第一个项目' },
        { id: 2, title: '项目二', desc: '这是第二个项目' },
        { id: 3, title: '项目三', desc: '这是第三个项目' },
      ]
    }
  },
  methods: {
    updateList(newList) {
      this.myList = newList;
    }
  }
}
</script>

自定义列表项

<template>
  <xl-drag-list v-model:list="myList" :item-height="70">
    <template v-slot="{ item, index }">
      <!-- 自定义列表项 -->
      <view class="custom-item">
        <text>{{ index + 1 }}. {{ item.title }}</text>
        <text class="drag-handle">≡</text>
      </view>
    </template>
  </xl-drag-list>
</template>

启用拖拽提示

<template>
  <xl-drag-list 
    v-model:list="myList" 
    :show-toast="true"
    drag-start-text="开始拖拽..."
    drag-end-text="拖拽完成!"
  ></xl-drag-list>
</template>

API

Props

属性名 说明 类型 默认值
list 列表数据 Array []
draggable 是否可拖拽 Boolean true
itemHeight 列表项高度 Number/String 80
titleField 标题字段名 String 'title'
descField 描述字段名 String 'desc'
longPressDrag 是否启用长按拖拽模式 Boolean false
longPressTime 长按触发时间(ms) Number 500
showToast 是否显示拖拽提示 Boolean false
dragStartText 开始拖拽时的提示文本 String '开始拖拽'
dragEndText 结束拖拽时的提示文本 String '拖拽完成'

事件

事件名 说明 回调参数
update:list 列表数据更新时触发 新的列表数据
drag-start 开始拖拽时触发 { item, index }
drag-end 拖拽结束时触发 { item, index }
drag-change 拖拽位置变化时触发 { oldIndex, newIndex, item, list }

插槽

插槽内容 说明 作用域参数
default 自定义列表项内容 { item, index }

最近更新

  • 添加了拖拽时的提示信息功能,可通过showToast控制
  • 支持自定义拖拽开始和结束的提示文本
  • 增加了长按拖拽模式,避免与点击事件冲突

许可证

MIT

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问