nutui二次封装上拉加载、下拉刷新组件
<!-- nutUI --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@nutui/nutui@2.1.8/dist/nutui.min.css"> <!-- nutUI --> <script src="https://cdn.jsdelivr.net/npm/@nutui/nutui@2.1.8/dist/nutui.min.js"></script>
封装组件:
scroller.vue:
<template> <div class="my_scroller_box" :class="className"> <nut-scroller class="inner_scroller_class" :is-un-more="isUnMore" :is-loading="isLoading" :type="'vertical'" :stretch="50" :propsTime="500" :pulldownTxt="pulldownTxt" :loadMoreTxt="loadMoreTxt" :unloadMoreTxt="unloadMoreTxt" @loadMore="loadMoreFun" @pulldown="pulldownFun"> <div slot="list" > <div class="content_wrap"> <slot name="content"></slot> </div> </div> </nut-scroller> </div> </template> <script> export default { props:{ className: { //样式名称 type: String, default: '' }, pulldownTxt:{ type:String, default:'下拉刷新' }, loadMoreTxt:{ type:String, default:'上拉加载' }, unloadMoreTxt:{ type:String, default:'没有更多了' }, isUnMore:{ //没有更多? //若没有更多,底部会出现 没有更多字样 type:Boolean, default:false }, isLoading:{ //正在加载? //若正在加载的状态:上拉和下拉会无效 type:Boolean, default:false } }, data(){ return{ } }, methods: { pulldownFun(){ //下拉方法 this.$emit("pulldownFun"); }, loadMoreFun(){ //上拉 this.$emit("loadMoreFun"); } }, } </script> <style lang="scss" scoped> .my_scroller_box{ flex-shrink: 0; .inner_scroller_class{ border:1px solid yellow; width:100%; } } </style>
使用:
<template> <div class="tiwen_box"> <scroller :class="'cus_scroller'" :isUnMore="isUnMore" :isLoading="isLoading" @pulldownFun="pulldownFun" @loadMoreFun="loadMoreFun"> <div slot="content"> 内容 </div> </scroller> </div> </template> <script> import scroller from "@/components/scroller"; export default { components:{ scroller, }, data(){ return{ isUnMore:false,//没有更多? isLoading:false,//正在加载? } }, methods: { pulldownFun(){ //上拉加载 console.log("下拉") var self=this; this.isLoading=true;//正在加载 setTimeout(()=>{ self.isLoading=false; },3000) }, loadMoreFun(){ //下拉刷新 console.log("上拉") this.isLoading=true;//正在加载 setTimeout(()=>{ self.isLoading=false; },3000) } }, } </script> <style lang="scss" scoped> .tiwen_box{ border:1px solid green; height:100vh; box-sizing: border-box; } .cus_scroller{ height:100vh; border:1px solid red; } </style>
。
分类:
nutUI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2019-05-20 js监听transition过渡事件
2019-05-20 vue使用子路由时,默认的子路由视图不显示问题