更新记录

1.0.1(2025-08-10) 下载此版本

完善细节和文档

1.0.0(2025-08-08) 下载此版本

支持鸿蒙Next拖动排序


平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云
×

uni-app(4.27)

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

hcd-dragsort 拖动排序

组件说明

  • 这是一个传入列表数据会生成一个可拖动排序列表的组件;
  • 只支持单列多行;
  • 由于没有插槽,行的样式需要自行从内部去修改;
  • 拖动会有触感反馈,如果设备支持的话(鸿蒙 Next 不支持);
  • 组件使用了 wxs,兼容APP-VUE、H5、MP-WEIXIN,使用了 renderjs 兼容 APP-HARMONY;
  • 组件是在HM-dragSorts的基础上进行修改的

属性说明

属性名 类型 说明
list ObjectArray 必填,列表数据,数据格式请参考示例,注意:数据非双向绑定,拖动并不会直接修改list数据,排序过的数据在confirm中获取
height Int 选填,整个列表的高度,默认等于窗口高度
rowHeight Int 选填,每一行的高度,单位:px,默认44px
feedbackGenerator Boolean 选填,是否开启拖动触感反馈,可选值true/false,默认true 开启
longTouch Boolean 选填,是否长按拖动,可选值true/false,默认false 关闭,如果是整行拖拽,请开启长按拖拽,不然页面不能滚动
longTouchTime Int 选填,触发长按时长,单位:ms,默认350ms
autoScroll Boolean 选填,是否拖拽至边缘自动滚动列表,可选值true/false,默认true 开启
@confirm EventHandle 拖拽结束且行位置发生了改变,触发confirm事件,event = {index:'原始下标',moveTo:'被拖动到的下标',moveRow:'拖动行数据',list:'整个列表拖动后的数据'}
@change EventHandle 拖拽过程中,行位置发生交换时,触发change事件,event = {index:'原始下标',moveTo:'被拖动到的下标',moveRow:'拖动行数据'}

内置函数说明

push,unshift,splice函数

内置了push,unshift,splice函数,组件设置ref属性,通过$refs调用,实现列表的删除插入,使用方法和数组的push,unshift,splice一致,push,unshift,splice函数修改后会返回修改后的值

例如:

let tmplist = this.$refs.dragSorts.splice(5,1,...rows);

使用示例

页面:

<template>
    <view>
        <hcd-dragsort 
            ref="dragSorts"
            :height="dragHeight" 
            :list="dataList" 
            :rowHeight="60" 
            :feedbackGenerator="true"
            @confirm="confirmSort"></hcd-dragsort>
    </view>
</template>

script:

<script>
    import HcdDragsort from '/path/hcd-dragsort.vue';
    export default {
        components: {
            HcdDragsort,
        },
        data() {
            return {
                dragHeight: 0,
                dataList: []
            }
        },
        onLoad() {
            var systemInfo = uni.getSystemInfoSync();
            console.log(systemInfo);
            var statusBarHeight = systemInfo.statusBarHeight;
            var navigationHeight = statusBarHeight + 44;
            this.dragHeight = systemInfo.screenHeight - navigationHeight;
            for (var i = 1; i < 100; i++) {
                this.dataList.push({
                    name: i + ''
                })
            }
        },
        methods: {
            confirmSort(e) {
                console.log(e)
            },
            changeSort(e) {
                console.log(e)
            }
        }
    }
</script>

隐私、权限声明

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

震动

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

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

许可协议

MIT协议