更新记录

2.0.1(2023-10-25)

修复无法点击元素的bug

2.0.0(2023-10-24)

实现兼容微信小程序,app,H5。实现滚动到指定位置,实现指定滚动方向

2.0(2023-10-24)

实现滚动到指定元素,实现滚动方向

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

虚拟列表-解决大数据列表操作问题

组件名:jp-virtual-list

安装方式

本组件符合easycom规范,HBuilderX 2.5.5起,只需将本组件导入项目,在页面template中即可直接使用,无需在页面中import和注册components

有项目需要开发的请联系 QQ:371524845

开发不易,如果帮助到你的,请支持 有问题请留言,作者会积极更新

基本用法

<template>
    <view class="h100">
        <view style="line-height: 40px;display: flex;justify-content: space-between;">
            <view @click="toAssign">滚动到:Item999</view>
            <view @click="toAssign1">滚动到:Item100</view>
            <view @click="toAssign2">滚动到:Item0</view>
        </view>
        <jp-virtual-list code="id" class="h100" :refresher="true" isBackTop @scrolltoupper="scrolltoupper" @refresher="refresher" :data="listx" ref="search">
            <template v-slot="{ list }">
                <view v-for="item in list" :key="item.id" :id="item.id" :ref="item.id">
                    <view class="list_item" :style="'height:' + item.height +'rpx'">
                        {{item.id}}随机高度:{{item.height}}
                    </view>
                </view>
            </template>
        </jp-virtual-list>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                listx: [],
                key: ''
            }
        },
        mounted() {
            const data = []
            for (let i = 0; i < 10000; i++) {
                data.push({
                    name: `Item ${i}`,
                    index: i,
                    id: `Item${i}`,
                    height: (Math.floor(Math.random() * 100)+100)
                })
            }
            this.listx = data
        },
        methods: {
            toAssign(){
                this.$refs.search.toAssign('Item999',this)
            },
            toAssign1(){
                this.$refs.search.toAssign('Item100',this)
            },
            toAssign2(){
                this.$refs.search.toAssign('Item0',this)
            },
            scrolltoupper(){
                const data = []
                for (let i = 0; i < 30; i++) {
                    data.push({
                        name: `Itemc ${i}`,
                        index: i,
                        id: `Itemc${i}${(Math.floor(Math.random() * 100)+100)}`,
                        height: (Math.floor(Math.random() * 100)+100)
                    })
                }
                setTimeout(()=>{
                    // 告诉组件我需要添加该数据
                    this.$refs.search.addPage(data)
                },1000)
            },
            refresher(){
                const data = []
                for (let i = 0; i < 10000; i++) {
                    data.push({
                        name: `Item ${i}`,
                        index: i,
                        id: `Item${i}`,
                        height: (Math.floor(Math.random() * 100)+100)
                    })
                }
                setTimeout(()=>{
                    this.listx = data
                    // 告诉组件刷新成功了
                    this.$refs.search.refreshers()
                },2000)
            },
        }
    }
</script>

<style lang="scss">
    .h100{
        height: calc(100vh - 80px);
    }
    .list_item {
        display: flex;
        justify-content: center;
        align-items: center;
        border: 1px solid #f5f5f5;
    }
</style>

API

Props

属性名 类型 默认值 说明
direction String 'bottom' 数据加载方向(bottom/top)
lazy Boolean false 【2.0以上版本已弃用】 是否懒加载,两种模式一种懒加载(数据量在5000以下),虚拟dom(大数据模式)
pageSizes Number 20 加载分页数
data Array [] 数据列表
refresher Boolean false 是否拥有下拉刷新
code String 'id' 到达指定元素(需要设置元素的id和ref为当前值,参考基本用法)
isBackTop Boolean false 是否拥有回到顶部(当前只用 direction=='bottom' 时启用)
* 注意jp-virtual-list需要一个高度

回调

事件名 类型 回调参数 说明
@operate function 操作数据成功之后的回调
@refresher function 下拉刷新的回调

事件

事件名 说明
refreshers 下拉刷新成功之后调用,用来关闭刷新动画
toAssign 到达指定元素(需要设置到达元素的id和ref值为指定的数据,需要和code统一)
addPage 向数组最后添加数据

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

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