当前位置: 首页 > news >正文

移动端Vant-list的二次封装,查询参数重置

Vant-list的二次封装

场景:在写项目需求的时候,移动端有用到vant-list组件。后续需求更新说要对列表数据页加搜索和筛选的功能。发现每次筛选完得在页面内手动重置一次查询参数。不方便,所以封了一层。

二次封装代码

<template><van-listv-model:loading="loading":finished="finished"@load="handleLoad"><div :class="listClass"><slotv-for="item in listData":key="item.id"v-bind="item"/></div><div v-if="loadOnce && !listData?.length" class="layout-list__empty">暂无数据</div></van-list>
</template><script setup>
const props = defineProps({request: {},listClass: {},pageSize: {type: Number,default: 10,},
});const listData = ref([]);
const loading = ref(false);
const finished = ref(false);
const loadOnce = ref(false);let pageNum = 0;
let requesting = false;const handleLoad = async () => {if (requesting || unref(finished)) { return }requesting = true;++pageNum;const formContent = {page: pageNum,pageSize: props.pageSize,};const { total, data } = await props.request(formContent);unref(listData).push(...data);loadOnce.value = true;if (!unref(listData).length || unref(listData).length >= total) {finished.value = true;}loading.value = false;requesting = false;
};const resetSearch = () => {listData.value = [];loading.value = false;finished.value = false;loadOnce.value = false;pageNum = 0;requesting = false;handleLoad();
};defineExpose({resetSearch,
});
</script><style lang="scss" scoped>
.layout-list {&__empty {padding: 12px 0;color: #666;text-align: center;}
}
</style>

组件使用

<mb-search@updated-search="updatedSearch"
/>
<mb-listref="mbListRef"v-slot="item":request="getList(() => (loadForm))"
><div>内容</div>
</mb-list><script setup>
import { getList } from '@/services/activiti/instance';defineProps({selectTypeList: {type: Array,default: () => [],},
});
const mbListRef = ref();const loadForm = ref({title: '',defName: '',instStatus: 'running',
});function updatedSearch(title) {loadForm.value.title = title;mbListRef.value.resetSearch();
}</script>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HUAWEI VRRP 实验
  • 哈弗架构和冯诺伊曼架构
  • 自动化一些操作
  • 【Redis】简单了解Redis中常用的命令与数据结构
  • 16进制转字符串,字符串转16进制
  • 【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10
  • 阿里云调整全球布局关停澳洲云服务器,澳洲服务器市场如何选择稳定可靠的云服务?
  • 从零开始搭建vite开发环境
  • 提示词工程(Prompt Engineering)是什么?
  • magma软件许可优化解决方案
  • el-tree 获取当前勾选节点的选中状态以及选中值对象 触发check-change多次事件问题原因
  • 【idea】idea配置gitee插件_简单使用
  • python网络爬虫之Urllib
  • 批量提取网页表格内容至excel文件
  • Cypress UI自动化之安装环境
  • Android 控件背景颜色处理
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • bootstrap创建登录注册页面
  • Flex布局到底解决了什么问题
  • gf框架之分页模块(五) - 自定义分页
  • go append函数以及写入
  • javascript 总结(常用工具类的封装)
  • JavaScript学习总结——原型
  • js学习笔记
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React系列之 Redux 架构模式
  • 第2章 网络文档
  • 构建工具 - 收藏集 - 掘金
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 漂亮刷新控件-iOS
  • 前端面试总结(at, md)
  • 前端学习笔记之观察者模式
  • 设计模式 开闭原则
  • 通过git安装npm私有模块
  • 学习使用ExpressJS 4.0中的新Router
  • nb
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 数仓建模:如何构建主题宽表模型?
  • (2)Java 简介
  • (20)docke容器
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (备份) esp32 GPIO
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (杂交版)植物大战僵尸
  • (转) Face-Resources
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .dwp和.webpart的区别
  • .NET Micro Framework 4.2 beta 源码探析
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .Net 垃圾回收机制原理(二)