使用Vue.js和Vant库实现下拉刷新和加载更多功能

341 阅读2分钟

在前端开发中,我们经常需要实现下拉刷新和加载更多这样的功能。这些功能可以提升用户体验,使用户在使用应用时更加流畅。在这篇文章中,我将介绍如何使用Vue.js和Vant库来实现这样的功能。

首先,我们需要在HTML中创建一个van-pull-refresh组件和一个van-list组件。van-pull-refresh组件用于实现下拉刷新的功能,van-list组件用于显示数据列表。

<div class='home-main-txt'>
    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
         <van-list
             style=" min-height:750px "   // 由于下拉这里要设置个高度
             v-model="loading"
             :finished="finished"
             finished-text="没有更多了"
             @load="onLoad">
         </van-list>
    </van-pull-refresh>
</div>

然后,在Vue实例的data中,我们需要定义一些变量来控制刷新状态、加载状态、页码、每页的数据量等。同时,我们还需要定义一个数组来存储接口返回的数据。

data() {
    return {
        refreshing: false, // 刷新状态
        loading: false, // 加载状态
        pageNo: 1, // 页码
        pageSize: 10, // 每页的数据量
        type: '', // 数据类型
        shopInfo: [], // 接口数据
        finished: false // 数据是否已经全部加载完毕
    }
},

接下来,我们需要定义一些方法来处理刷新、加载和获取数据的操作。在onRefresh方法中,我们需要重置页码、清空数据列表、设置刷新状态为true、设置加载状态为true,然后调用getList方法重新获取数据。在onLoad方法中,我们需要判断数据是否已经全部加载完毕,如果没有,则调用getList方法获取下一页的数据。在getList方法中,我们需要调用接口获取数据,然后根据数据的多少来更新列表和加载状态。

methods: {
    onRefresh() {
        this.pageNo = 1; // 重置页码
        this.shopInfo = []; // 清空数据列表
        this.refreshing = true; // 设置刷新状态为true
        this.loading = true; // 设置加载状态为true
        this.getList(); // 重新获取数据
    },
    onLoad() {
        if (!this.finished) { // 如果数据还没有全部加载完毕
            this.getList(); // 获取下一页的数据
        } else { // 如果数据已经全部加载完毕
            this.loading = false; // 设置加载状态为false
        }
    },
    getList() {
        getInterfaceData({ // 调用接口获取数据
            pageNo: this.pageNo,
            pageSize: this.pageSize,
            type: this.type
        }).then((res) => {
            // 根据数据的多少来更新列表和加载状态...
        }).catch((err) => {
            console.log('err', err);
        })
    }
}

以上就是使用Vue.js和Vant库实现下拉刷新和加载更多功能的基本步骤。通过这种方式,我们可以有效地提升用户体验,使用户在使用应用时更加流畅。