uniapp开发手机APP、H5网页、微信小程序、长列表插件

ml-list

插件地址:https://ext.dcloud.net.cn/plugin?id=18928

ml-list介绍

1、ml-list 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容
2、ml-list 低代码列表,帮助使用者快速构建列表,简单配置,快速上手。
3、支持自定义懒加载,优化长列表渲染性能,提升视图渲染效率.

ezgif-1-a6423aa111

ezgif-1-46f8fa65d9

安装方式

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

代码演示

以下代码均可复制粘贴直接运行

不使用插槽,showListIndex:可自定的高扩展的 懒加载机制,优化长列表提升渲染效率,提高用户体验。

<template><button :type="column==1?'primary':''" @click="change(1)">单列</button><button :type="column==2?'primary':''" @click="change(2)">双列</button><button :type="showCount>0?'primary':''" @click="changeCount(10)">使用showListIndex</button><button :type="showCount<=0?'primary':''" @click="changeCount(0)">不使用showListIndex</button><ml-listv-if="list&&list.length>0":column="column":list="list" ref="mlListRef":noMore="noMore" :showListIndex="showCount"@rowClick="rowClick"><!--  还可以增加其他内容,这里的内容可有可无--><template v-slot="{item, index}"><text style="color: #ff8f0e;">{{index + 1}}不改变组件的上,继续增加内容</text></template></ml-list>
</template>
<script setup>import { ref } from 'vue';import { onLoad, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app';const column = ref(1);const showCount = ref(10);const list = ref([]); // 列表数据const noMore = ref(false); // 是否没有更多数据了const mlListRef = ref(null); // mlList 组件实例,mlListRef.value.refreshList();刷新视图列表let counter = 1;const change = (num) => {list.value = [];counter = 1;loadMore();column.value = num;uni.showToast({ title: num+"", icon:"none", mask:false });};const changeCount = (num) => {list.value = [];counter = 1;loadMore();showCount.value = num;uni.showToast({ title: num+"", icon:"none", mask:false });};/*** 加载更多*/const loadMore = () => {uni.showLoading({ title: "加载中。。。" });setTimeout(() => {uni.hideLoading();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);};/*** 点击了列表* @param row 当前行数据* @param index 当前行的索引*/const rowClick = (row, index) => {console.log(index, row);uni.showToast({ title:row.title, icon:"none", mask:false });};/*** 下拉刷新,需要在page.json中开启下拉刷新功能*/onPullDownRefresh(() => {list.value = []; // 重新请求后台,刷新当前页面数据uni.showLoading({ title: "加载中。。。" });// 模拟请求后台,获取数据setTimeout(() => {uni.hideLoading();// 加载到数据后,停止刷新uni.stopPullDownRefresh();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);});/*** 滑动到底,加载更多数据*/onReachBottom(() => {// 更新列表数据mlListRef.value.refreshList();if (counter >= 3) {noMore.value = true;return;}counter ++;loadMore();});/*** 页面加载,请求后台 获取数据*/onLoad(() => {// 模拟请求后台,拿到数据uni.showLoading({ title: "加载中。。。" });setTimeout(() => {uni.hideLoading();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);});/*** 模拟 后台返回的数据列表*/const getList = () => {let tempList = [];for (var i = 0; i < 15; i++) {tempList.push({title: "List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。",url: "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg",});};return tempList;  };
</script>

注意:如果使用了showListIndex,则触发onReachBottom触底事件时,一定要调用refreshList()方法来刷新视图,mlListRef.value.refreshList();

使用自定义插槽,开始自定义插槽:itemSlot="true"showListIndex:可自定的高扩展的 懒加载机制,优化长列表提升渲染效率,提高用户体验。

<template><button :type="column==1?'primary':''" @click="change(1)">插槽单列</button><button :type="column==2?'primary':''" @click="change(2)">插槽双列</button><button :type="showCount>0?'primary':''" @click="changeCount(10)">使用showListIndex</button><button :type="showCount<=0?'primary':''" @click="changeCount(0)">不使用showListIndex</button><ml-listv-if="list&&list.length>0":column="column":list="list" ref="mlListRef":itemSlot="true":noMore="noMore" :showListIndex="showCount"@rowClick="rowClick"><!-- :itemSlot="true" 使用插槽,开启自定义配置 --><template v-slot:item="{item, index}"><image :src="item.url" style="width:99%;height:100px;"></image><text style="color: #ff8f0e;">自定义插槽</text><text> {{item.title}} </text></template></ml-list>
</template>
<script setup>import { ref } from 'vue';import { onLoad, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app';const column = ref(1);const showCount = ref(10);const list = ref([]); // 列表数据const noMore = ref(false); // 是否没有更多数据了const mlListRef = ref(null); // mlList 组件实例,mlListRef.value.refreshList();刷新视图列表let counter = 1;const change = (num) => {list.value = [];counter = 1;loadMore();column.value = num;uni.showToast({ title: num+"", icon:"none", mask:false });};const changeCount = (num) => {list.value = [];counter = 1;loadMore();showCount.value = num;uni.showToast({ title: num+"", icon:"none", mask:false });};/*** 加载更多*/const loadMore = () => {uni.showLoading({ title: "加载中。。。" });setTimeout(() => {uni.hideLoading();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);};/*** 点击了列表* @param row 当前行数据* @param index 当前行的索引*/const rowClick = (row, index) => {console.log(index, row);uni.showToast({ title:row.title, icon:"none", mask:false });};/*** 下拉刷新,需要在page.json中开启下拉刷新功能*/onPullDownRefresh(() => {list.value = []; // 重新请求后台,刷新当前页面数据uni.showLoading({ title: "加载中。。。" });// 模拟请求后台,获取数据setTimeout(() => {uni.hideLoading();// 加载到数据后,停止刷新uni.stopPullDownRefresh();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);});/*** 滑动到底,加载更多数据*/onReachBottom(() => {// 更新列表数据mlListRef.value.refreshList();if (counter >= 3) {noMore.value = true;return;}counter ++;loadMore();});/*** 页面加载,请求后台 获取数据*/onLoad(() => {// 模拟请求后台,拿到数据uni.showLoading({ title: "加载中。。。" });setTimeout(() => {uni.hideLoading();getList().forEach((item) => {item.title = `[${list.value.length + 1}]${item.title}`;list.value.push(item);});}, 500);});/*** 模拟 后台返回的数据列表*/const getList = () => {let tempList = [];for (var i = 0; i < 15; i++) {tempList.push({title: "List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。",url: "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg",});};return tempList;  };
</script>

注意:如果使用了showListIndex,则触发onReachBottom触底事件时,一定要调用refreshList()方法来刷新视图,mlListRef.value.refreshList();

props

属性名类型默认值可选值说明是否必填
columnNumber21列表显示列表数,1-单列表,2-双列表
imageWidthString--列表中图片展示的宽度
showMoreBooleantruefalse是否显示 loadMore 加载更多组件
maxLinesNumber2 | 4-文本展示行数,超出指定行数则显示…
noMoreBooleanfalsetrue是否没有更多数据,默认false,当为 true时,不再触发 loadMore 去加载数据
itemSlotBooleanfalsetrue是否使用自定义插槽,默认false,当为true时,默认组件将不在展示
stytleObject{}-自定义样式,需要使用 Object 的形式
listArray[]-数据列表
showListIndexNumber0-懒加载机制,可视界面下渲染的列表数量,用于优化 大量数据下的列表渲染,提高性能,注意,使用showListIndex时一定要调用refreshList()方法刷新整个视图,否则后面的数据将不会展示

list[option]【组件配置项】

属性名类型默认值可选值说明是否必填
titleString--名称
urlString--图片
Any--其他自定义参数,点击后尽数返回-

事件 Events

事件名返回参数说明
@rowClick(row, index)当点击了列表时,触发该rowClick事件,并返回当前点击的数据和索引
@loadMore--(过时,后续将剔除)推荐使用onReachBottom来自定义触底加载更多
@refresh--(过时,后续将剔除)推荐使用onPullDownRefresh来自定义刷新事件

组件方法 methods

方法名参数说明
stopRefresh--(过时,后续将剔除)
。。。。。。--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秋招突击——6/26~6/27——复习{二维背包问题——宠物小精灵之收服}——新作{串联所有单词的字串}

文章目录 引言复习二维背包问题——宠物小精灵之收服个人实现重大问题 滚动数组优化实现 新作串联所有单词的字串个人实现参考实现 总结 引言 今天应该是舟车劳顿的一天&#xff0c;头一次在机场刷题&#xff0c;不学习新的东西了&#xff0c;就复习一些之前学习的算法了。 复…

百度Apollo的PublicRoadPlanner一些移植Ros2-foxy的思路(持续更新)

如今的PublicRoadPlanner就是之前耳熟能详的EM planner 计划 —— ROS2与CARLA联合仿真 结构化场景: 规划算法:EM-planner 控制算法:MPC和PID 非结构化场景: 规划算法采用Hybrid A* (1)小车模型搭建(计划参考Github上Hybrid上的黑车,比较炫酷) (2)车辆里程计: 位…

深入比较:Batch文件与Shell脚本的异同

在操作系统中&#xff0c;自动化脚本是一种常见的工具&#xff0c;用于执行一系列自动化命令或程序。Windows和类Unix系统都提供了各自的脚本解决方案&#xff1a;Batch文件&#xff08;在Windows中&#xff09;和Shell脚本&#xff08;在类Unix系统中&#xff09;。本文将详细…

有哪些方法可以恢复ios15不小心删除的照片?

ios15怎么恢复删除的照片&#xff1f;在手机相册里意外删除了重要的照片&#xff1f;别担心&#xff01;本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识&#xff0c;只需要按照以下步骤操作&#xff0c;你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…

SRC公益上分的小技巧一

前言 之前发布的文章&#xff0c;例如SRC中的一些信息收集姿势- Track 知识社区 - 掌控安全在线教育 - Powered by 掌控者 里面就有提到若依系统&#xff0c;默认账号密码非常简单 是 admin / admin123 但是&#xff0c;往往我们去挖掘的时候很容易出现 这说明了若依系统的门…

Viewer.js 图片预览插件使用

参考&#xff1a;Viewer.js 图片预览插件使用 demo链接&#xff1a;viewerjs_demo

【Linux:文件描述符】

文件描述符&#xff1a; 文件描述符的分配原则&#xff1a;最小未分配原则 每一个进程中有一个task_struct结构体&#xff08;PCB)&#xff0c;而task_struct中含有struct file_sturct*file的指针&#xff0c;该指针指向了一个struct files_struct的结构体该结构体中含有一个f…

PHP框架详解- symfony框架

Symfony框架是一个开源的PHP框架&#xff0c;由SensioLabs公司开发并维护&#xff0c;最早发布于2005年。它旨在为Web应用程序的开发提供一个高效且结构化的环境。Symfony框架的设计理念是减少Web应用程序的创建和维护时间&#xff0c;并避免重复性任务。 Symfony框架采用MVC&…

PG最大连接数

在 PostgreSQL 数据库中&#xff0c;您可以使用 SQL 查询来获取最大连接数、当前连接数以及每个数据库的连接数。以下是一些常用的查询&#xff1a; 查看最大连接数&#xff1a; PostgreSQL 的最大连接数由配置参数 max_connections 决定。您可以在 postgresql.conf 文件中设置…

使用IMAP服务获取163邮箱的未读邮件

使用IMAP服务获取163邮箱的未读邮件 整体的逻辑思路如下&#xff1a; 开启163邮箱的IMAP服务&#xff0c;拿到授权码用于登录IMAP服务登录IMAP服务&#xff0c;获取邮箱的未读邮件列表遍历未读邮件列表&#xff0c;获取邮件内容 # 导入必要的库 import os import imaplib im…

三大工作流引擎技术Activiti、Flowable、Camunda选型指南

文章目录 前言1 流程引擎发展历程2 流程引擎主要概念BPM (Business Process Management)BPMN (Business Process Model and Notation)CMMN (Case Management Model and Notation)DMN (Decision Model and Notation)事件&#xff08;Event&#xff09;顺序流&#xff08;Sequenc…

从静电到浪涌,全面防护:雷卯多电压等级电源保护设计方案汇总

在当今数字化、电气化日益加速的时代&#xff0c;电子设备和电力系统面临着前所未有的挑战&#xff0c;其中静电放电(ESD)、浪涌以及雷击等瞬态事件成为了威胁设备稳定性和寿命的关键因素。从精密的消费电子产品到工业级控制系统&#xff0c;从智能家居到新能源汽车&#xff0c…

区块链技术的核心要素:共识机制、加密技术与分布式账本

区块链听起来像个非常高大上的技术&#xff0c;其实它的核心原理并不难理解。今天我们要聊的就是区块链的三个核心要素&#xff1a;共识机制、加密技术和分布式账本。想象一下区块链是一个巨大的数字笔记本&#xff0c;我们要弄清楚大家如何共同写这个笔记本&#xff0c;又如何…

用一个实例看如何分享大量照片 续篇二,关于Exif (Exchangeable Image File) - 可交换图像文件

续篇二&#xff1a;说说关于照片隐含的 Exif (Exchangeable Image File) 可交换图像文件 数码照片的Exif 参数有很多&#xff0c;重要的Exif信息&#xff1a;拍摄日期、时间、拍摄器材、GPS信息。 当然这主要对自己的档案有意义&#xff0c;如果放到网上还是建议抹去这些信息。…

Bad owner or permissions on C:\\Users\\username/.ssh/config > 过程试图写入的管道不存在。

使用windows连接远程服务器出现Bad owner or permissions 错误 问题&#xff1a; 需要修复文件权限 SSH 配置文件应具有受限权限以防止未经授权的访问 确保只有用户对该.ssh/config文件具有读取权限 解决方案&#xff1a; 在windows下打开命令行&#xff0c;通过以下命令打开文…

C++编程(四)this指针 常函数 常对象 静态成员

文章目录 一、this指针&#xff08;一&#xff09;概念&#xff08;二&#xff09;显式使用this指针的场景1. 当形参和成员变量名一致时2. 返回对象自身的时候必须要使用this指针3. 在类中销毁一个对象 二、常函数和常对象&#xff08;一&#xff09;常函数1. 概念2. 语法格式 …

python OpenCV 库中的 cv2.Canny() 函数来对图像进行边缘检测,并显示检测到的边缘特征

import cv2# 加载图像 image cv2.imread(4.png)# 使用 Canny 边缘检测算法提取边缘特征 edges cv2.Canny(image, 100, 200)# 显示边缘特征 cv2.imshow(Edges, edges) cv2.waitKey(0) cv2.destroyAllWindows() 代码解析&#xff1a; 导入 OpenCV 库&#xff1a; import cv2加…

【MFC】socket通信代码解析

目录 一、在MFC中使用Winsock进行socket编程 1.1 包含必要的头文件 1.2 初始化Winsock 1.3创建socket 1.4 绑定socket 1.5 监听连接(对于服务器) 1.6 建立连接(对于客户端) 1.7 发送和接收数据 1.8. 关闭socket 1.9 错误处理 1.10 MFC集成 二、MFC中Socke…

PT100(RTD)是什么?2线,3线,4线原理

RTDs - or Resistance Temperature Detectors- (电阻式温度探测器)&#xff0c;是温度型传感器&#xff0c;包含一个电阻&#xff0c;这个阻值可以随温度的变化而变化。在工业的进程中和实验室里已经使用了很多年&#xff0c;以精确&#xff0c;可靠和稳定的特性。 2线制 2线制…

解决Ucharts在小程序上的层级过高问题

<qiun-wx-ucharts canvas2d"{{true}}" type"pie" opts"{{rectificationRateOpts}}" chartData"{{rectificationRateData}}" /> 开启2d渲染即可解决&#xff08;在小程序开发工具上看着层级还是高&#xff0c;但是在手机上是正常…