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

很多网站没排名了免费做网站报价

很多网站没排名了,免费做网站报价,h5开发是什么意思,国外客户推广网站微信小程序uni-appvue3实现局部上下拉刷新和scroll-view动态高度计算 前言 在uni-appvue3项目开发中,经常需要实现列表的局部上下拉刷新功能。由于网上相关教程较少且比较零散,本文将详细介绍如何使用scroll-view组件实现这一功能,包括动态高度计算、下拉刷新、上拉加载等完整…微信小程序uni-appvue3实现局部上下拉刷新和scroll-view动态高度计算 前言 在uni-appvue3项目开发中,经常需要实现列表的局部上下拉刷新功能。由于网上相关教程较少且比较零散,本文将详细介绍如何使用scroll-view组件实现这一功能,包括动态高度计算、下拉刷新、上拉加载等完整实现。 重要提示 ⚠️ triggered状态管理是关键 triggered必须手动管理其true/false状态不正确的状态管理会导致下拉刷新卡住需要在适当的时机重置状态 核心实现思路 状态定义 // 下拉刷新相关状态 const triggered ref(false) // 触发下拉刷新状态 const refresherEnabled ref(true) // 是否启用下拉刷新关键事件处理 // 下拉过程中触发 const onPulling () {triggered.value true // 手动设置为true }// 刷新结束时触发 const onRestore () {triggered.value false // 手动重置为false }// 刷新中断时触发 const onAbort () {triggered.value false // 手动重置为false }// 刷新数据处理 const refreshHistoryList async () {triggered.value true // 开始刷新时设置为truetry {// 执行刷新逻辑await loadData()} catch (err) {console.error(刷新失败:, err)} finally {triggered.value false // 完成后一定要设置为false} }组件配置 scroll-view:refresher-enabledrefresherEnabled:refresher-triggeredtriggeredrefresherrefreshrefreshHistoryListrefresherpullingonPullingrefresherrestoreonRestorerefresherabortonAbort !-- 列表内容 -- /scroll-view注意事项 状态重置时机 刷新完成时必须重置刷新中断时必须重置组件卸载时最好重置 常见问题 忘记重置导致卡住重置时机不对导致异常多个事件重复设置状态 最佳实践 使用try/finally确保重置统一状态管理位置添加适当的错误处理 快速开始 1. 基础配置 2. 组件结构 在template中创建scroll-view组件: templatescroll-view :style{ height: scrollViewHeight }:scroll-ytrue:refresher-enabledrefresherEnabledrefresherrefreshrefreshHistoryListrefresherpullingonPullingscrollroll:enable-passivetrue:show-scrollbarfalserefresherrestoreonRestorerefresherabortonAbort:refresher-triggeredtriggeredrefscrollView!-- 列表内容 --view classempty-state v-show!list.length暂无数据/viewview v-for(item, index) in list :keyindex!-- 列表项内容 --/viewup-loadmore v-iflist.length0 :statusscrollStatus loadmoreloadmore//scroll-view /template注意uwiewPlus组件库up-loadmore是通过loadmore来触发click的效果的。 3. 核心状态定义 属性/事件类型默认值必填说明style.heightstring-是设置scroll-view高度,不设置无法滚动scroll-ybooleanfalse否是否允许纵向滚动scroll-xbooleanfalse否是否允许横向滚动refresher-enabledbooleanfalse否是否开启下拉刷新功能refresher-triggeredbooleanfalse否当前下拉刷新状态enable-passivebooleanfalse否是否开启被动监听滚动事件show-scrollbarbooleantrue否是否显示滚动条refresherrefreshfunction-否下拉刷新触发时的回调refresherpullingfunction-否下拉过程中触发的回调refresherrestorefunction-否下拉刷新复位时触发的回调refresherabortfunction-否下拉刷新被中止时触发的回调scrollfunction-否滚动时触发的回调函数refstring-否组件的引用标识 // 下拉刷新相关 const triggered ref(false) // 触发下拉刷新状态 const refresherEnabled ref(true) // 是否启用下拉刷新 const currentScrollTop ref(0) // 当前滚动位置 const scrollViewHeight ref(400rpx) // scroll-view高度// 分页相关 const currentPage ref(1) // 当前页码 const pageSize ref(10) // 每页数量 const totalPage ref(0) // 总页数 const scrollStatus refstring(loadmore) // 滚动状态4. 动态高度计算 onReady(() {// 获取系统信息const systemInfo uni.getSystemInfoSync()const windowHeight systemInfo.windowHeight// 获取各元素高度const query uni.createSelectorQuery()Promise.all([new Promisenumber(resolve {query.select(.u-demo-block).boundingClientRect(data {resolve(data?.height || 0)}).exec()}),// ... 获取其他元素高度]).then(([demoBlockHeight, titleHeight, uploadHeight]) {// 计算scroll-view高度const scrollHeight windowHeight - demoBlockHeight - titleHeight - uploadHeight - 40scrollViewHeight.value ${scrollHeight}rpx}) })核心功能实现 1. 下拉刷新 // 下拉刷新处理 const refreshHistoryList async () {triggered.value truecurrentPage.value 1try {const res await loadFirstPage()list.value res.dataupdateLoadStatus()} catch (err) {console.error(刷新失败:, err)} finally {triggered.value false} }2. 上拉加载 // 上拉加载更多 const loadmore async () {if (scrollStatus.value noMore) returnscrollStatus.value loadingtry {const res await loadMoreData(currentPage.value)list.value.push(...res.data)updateLoadStatus()} catch (err) {console.error(加载失败:, err)scrollStatus.value loadmore} }3. 滚动事件处理 const roll (e: any) {currentScrollTop.value e.detail.scrollTop// 控制下拉刷新启用状态refresherEnabled.value e.detail.scrollTop 50// 触底加载更多const scrollBottom e.detail.scrollHeight - e.detail.scrollTop - e.detail.heightif (scrollBottom 50 scrollStatus.value loadmore) {loadmore()} }注意事项 高度计算 需要考虑所有固定元素的高度使用rpx单位确保跨设备兼容性预留适当边距避免内容被遮挡 性能优化 使用enable-passive提升滚动性能合理控制刷新频率避免频繁触发加载更多 用户体验 添加加载提示保持滚动位置合理控制刷新触发时机 加载更多组件使用 ⚠️ up-loadmore组件使用说明 基础配置 up-loadmore v-iflist.length0 :statusscrollStatus loadmoreloadmoreloadmore-text加载更多 /状态管理 // 加载状态 const scrollStatus refstring(loadmore) // 可选值: loadmore/loading/noMore// 加载更多处理 const loadmore async () {if (scrollStatus.value noMore) returnscrollStatus.value loading // 设置加载中状态try {const res await loadMoreData(currentPage.value)list.value.push(...res.data)// 更新加载状态if (currentPage.value totalPage.value) {scrollStatus.value noMore} else {scrollStatus.value loadmore}} catch (err) {console.error(加载失败:, err)scrollStatus.value loadmore} }触发方式 通过loadmore事件监听触发加载可以在scroll-view滚动到底部时自动触发也可以点击加载更多文本手动触发 状态说明 loadmore: 可以加载更多loading: 正在加载中noMore: 没有更多数据 完整示例 scroll-view scrollroll:scroll-ytrue !-- 列表内容 --view v-for(item, index) in list :keyindex{{ item }}/view!-- 加载更多组件 --up-loadmorev-iflist.length0:statusscrollStatusloadmoreloadmoreloadmore-text加载更多/ /scroll-viewscript setup langts const scrollStatus ref(loadmore) const currentPage ref(1) const list ref([])// 滚动触底自动加载 const roll (e: any) {const scrollBottom e.detail.scrollHeight - e.detail.scrollTop - e.detail.heightif (scrollBottom 50 scrollStatus.value loadmore) {loadmore()} }// 加载更多处理 const loadmore async () {if (scrollStatus.value noMore) returnscrollStatus.value loadingtry {const res await loadMoreData(currentPage.value)list.value.push(...res.data)scrollStatus.value res.hasMore ? loadmore : noMore} catch (err) {console.error(加载失败:, err)scrollStatus.value loadmore} } /script总结 通过本教程的学习,我们掌握了: scroll-view组件的基本使用动态高度计算方法下拉刷新实现上拉加载更多功能滚动位置维护 参考资料 微信小程序官方文档Vue3文档 admore’ : ‘noMore’ } catch (err) { console.error(‘加载失败:’, err) scrollStatus.value ‘loadmore’ } } ## 总结通过本教程的学习,我们掌握了: 1. scroll-view组件的基本使用 2. 动态高度计算方法 3. 下拉刷新实现 4. 上拉加载更多功能 5. 滚动位置维护## 参考资料 - [微信小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html) - [Vue3文档](https://v3.cn.vuejs.org/) - [uview-plus文档](https://uiadmin.net/uview-plus/)
http://www.hkea.cn/news/14450751/

相关文章:

  • 湘潭建设公司网站网站维护是什么意思
  • 吉林省住房与建设厅网站免费进出货管理软件app
  • 商城形式的网站需要多少钱北京网站设计网站设计公司价格
  • 西安学校网站建设价格深圳网站设计灵点网络品牌
  • 兴仁市建设局网站网络营销比较常用的营销模式有哪些
  • 企业宣传网站方案培训机构招生7个方法
  • 什么是seo优化推广vps wordpress mysql优化
  • asp.net企业网站框架网站数据库大小
  • 国内网站制作特点wordpress 大附件
  • 网站建设公司华网天下买2年送2年宁波网络营销推广
  • 建网站带支付链接郑州发布紧急通告
  • 深圳南山住房和建设局网站成都十大猎头公司
  • 虾皮跨境电商网站虚拟主机怎么弄网站
  • 福建高能建设工程有限公司网站楼盘网站建设方案ppt
  • 景德镇市场建设局网站网站备案的服务器
  • 大学网站栏目建设通知做养生网站需要什么资质
  • 辽宁省朝阳网站建设南通的互联网公司网站
  • 网站开发说明书网站优化推广怎么做
  • 建设三轮摩托车官方网站徐州建设工程
  • 网站左侧分类菜单怎么做请人做网站注意事项
  • 酒店做爰视频网站大岭山网站
  • 电商网站建设电话软文范例大全
  • 网站建设风险控制如何自己制造软件
  • 雄安网站建设优化公司个人网站制作的步骤
  • 莱芜警方网站官网品牌创意设计
  • 交易网站建设推广做网站南充
  • 网站权重一直做不上去安吉网站制作
  • 兼职招聘网站asp网站开发参考文献
  • wdcp新建网站网站源码下载软件
  • 商务网站建设与管理网站开发好吗