首页 > 其他分享 >vant列表下拉刷新、上拉加载|list使用方法

vant列表下拉刷新、上拉加载|list使用方法

时间:2023-12-12 16:00:28浏览次数:32  
标签:loading false vant list 上拉 刷新 page 加载

Vant列表list使用方法

Vant列表list的使用方法和注意事项

下列代码为允许下拉刷新

1.使用组件

<van-pull-refresh v-model="refreshing"  @refresh="onRefresh">
    <van-list
              v-model="loading"
              :finished="finished"
              offset="20"
              finished-text="没有更多了"
              @load="onLoad"
              :immediate-check="false"
              >
        <van-cell v-for="item in list" :key="item.id" :title="item" />
    </van-list>
</van-pull-refresh>

2.加载事件的方法

onLoad() {       
    setTimeout(() => {
        if(this.refreshing){
            this.page = 1
            this.refreshing = false
        }
        // 如果为false 才能执行 否则直接忽略这次请求
        if (!this.list_lock) {
            this.list_lock = true
            // 调用接口
            this.getList()
                .then((result)=>{
                // 如果返回的数据是第一页的数据,那么先清除当前列表防止出现因多次一页接口数据重复
                if (result.data.current == 1) {
                    this.list = []
                }
                this.finished = true
            })
                .catch()
                .finally(() => {
                this.list_lock = false
            })
        }
        // 加载状态结束
        this.loading = false
    }, 1000)
},

3.下拉刷新事件

onRefresh(){
    this.list = []
    // 上方加载动画
    this.loading = true
    // 更改为未完成状态触发触底加载
    this.finished = false
    this.onLoad() //触发获取事件的方法
}

调取接口

getList() {
    Maintenance_page.getList()
        .then((res) => {
        if (res.code == '0' && this.userId) {
            // 如果是通过下拉刷新的方式刷新页面
            this.loading = false
            if (this.page == 1) {
                this.list = res.data.deviceInfos
            } else {
                this.list = [...this.list, ...res.data.deviceInfos]
            }
            this.total = res.data.total
            let sum = this.page * this.pageSize
            if (sum >= this.total) {
                this.finished = true
            } else {
                this.finished = false
            }
            this.page++
        } else {
            this.loading = false
        }
    })
        .catch((err) => {
        this.loading = false
        console.log('getList方法错误信息 :>> ', err)
    })
},

无论是下拉刷新、切换标签栏、搜索内容等涉及刷新操作的均采用覆盖式更新,且刷新后页码不进行增加,仅单纯将列表初始化,后续需要上拉加载的时候调用onLoad自动执行加载,每加载一次后针对加载内容进行判断,是否finished,然后对页码进行操作,最后设置loading状态为false解除加载状态。

标签:loading,false,vant,list,上拉,刷新,page,加载
From: https://www.cnblogs.com/ommggg/p/17897101.html

相关文章

  • springboot listener、filter登录实战
    转载自:www.javaman.cn博客系统访问:http://175.24.198.63:9090/front/index登录功能1、前端页面采用的是layui-admin框架,文中的验证码内容,请参考作者之前的验证码功能<!DOCTYPEhtml><htmllang="zh"xmlns:th="http://www.thymeleaf.org"><head><title>ds博客</tit......
  • 无涯教程-MFC - List Box函数
    列表框显示用户可以查看和选择的项目列表,例如文件名,列表框由CListBox类表示,在单选列表框中,用户只能选择一项,在多选列表框中,可以选择一系列项目,当用户选择一个项目时,该项目将突出显示,并且列表框会将通知消息发送到父窗口。这是列表框的一些映射条目MessageMapentry描述LBN_......
  • MyBatis-Plus 自定义 TypeHandler 映射JSON类型为List
    1在mysql5.7支持json类型,那么在表实体是怎么运用的在mybatis-plus中有相关的handler/***Jackson实现JSON字段类型处理器**@authorhubin*@since2019-08-25*/@Slf4j@MappedTypes({Object.class})@MappedJdbcTypes(JdbcType.VARCHAR)publicclassJackso......
  • Redis数据结构3:REDIS_LISTNODE
    REDIS_LISTNODEREDIS_LISTNODE本质上与Java的LinkedList一致,NodeList即为链表,是基本的线性结构。C语言原生没有对链表的支持,Redis对链表进行了实现。listNodetypedefstructlistNode{structlistNode*prev;structlistNode*next;void*value;}listNode;l......
  • 【Java】删除List中的几行数据
    方法一: list.subList(from,to).clear();(注意不要超出list的长度范围)1List<Integer>list=newArrayList<>();2list.add(1);3list.add(2);4list.add(3);5list.add(4);6list.subList(0,2).clear();7System.out.println("list=>"+list);......
  • MFC CListVtrl 控件简单测试
    ▲样式Demo关联控件变量m_CList,在属性中将视图(View)设置成Report(报表)模式。在BOOLCMFCApplication4LlisBoxDlg::OnInitDialog()初始化函数中添加测试代码://TODO:在此添加额外的初始化代码//m_CList.SetView(1);//视图View要改成Report报表模式//设置风格样......
  • How to Use Docker and NS-3 to Create Realistic Network Simulations
    https://insights.sei.cmu.edu/blog/how-to-use-docker-and-ns-3-to-create-realistic-network-simulations/ HowtoUseDockerandNS-3toCreateRealisticNetworkSimulationsALEJANDROGOMEZMARCH27,2023Sometimes,researchersanddevelopersneedt......
  • 【JavaSE】集合Collection{List(ArrayList, LinkedList), Set(TreeSet, HashSet, Link
    集合单列集合:Collection接口单列集合:一次添加一个元素;如果集合中添加的是类,要重写equals方法,否则比较的是地址,无法正常删除内容相同的元素。单列集合通用遍历方式1.迭代器遍历2.增强for循环遍历增强for循环底层逻辑还是迭代器,字节码文件反编译为java会发现还是迭代......
  • Python:数据容器-list(列表)
    列表定义语法:字面量[元素1,元素2,元素3,...]定义变量变量名称=[元素1,元素2,元素3,...]定义空列表变量名称=[]变量名称=list()列表内的每个数据,称之为元素以[]作为标识列表内每个元素用,逗号隔开注意事项:列表可以一次多个数据,且可以为不同数据类型,支持嵌套"......
  • C# ListView失去焦点仍然保持选中的Item高亮
    1privatevoidlistView_Validated(objectsender,EventArgse)2{3if(listView.FocusedItem!=null)4{5listView.FocusedItem.BackColor=SystemColors.Highlight;6listView.FocusedItem.ForeColor=Color.White;......