加载更多---vue

可直接拿来用

<template>
    <div class="container">
        <div class="list">
            <ul
                class="list"
                v-infinite-scroll="load"
                infinite-scroll-disabled="disabled"
            >
                <li
                    v-for="(i, index) in countData"
                    :key="index"
                    class="list-item"
                >
                    {{ i }}
                </li>
            </ul>
        </div>
        <p v-if="loading && isFlag" @click="more" class="btn">
            查看更多
            <van-icon name="arrow-down" />
        </p>
        <p v-if="noMore && isFlag" class="btn">没有更多了</p>
    </div>
</template>

<script>
export default {
    data() {
        return {
            count: [
                "北京",
                "天津",
                "河北",
                "山西",
                "内蒙古",
                "辽宁",
                "吉林",
                "黑龙江",
                "上海",
                "江苏",
            ], // 数据列表
            cou: 4, //默认显示条数
            loading: false,
            isFlag: false,
            num: 4, //每次加载显示条数
        };
    },
    computed: {
        noMore() {
            // 判断加载条数是否大于列表数据长度
            return this.cou > this.count.length;
        },
        disabled() {
            // 加载完成
            return this.loading || this.noMore;
        },
        countData() {
            // 计算属性使用切片生成新数组
            let data = [];
            // 大于默认显示条数,使用切片slice,返回新数组
            if (this.count.length > this.cou) {
                data = this.count.slice(0, this.cou);
                return data;
            } else {
                // 否则使用原来数组,不进行切片处理
                data = this.count;
                return data;
            }
        },
    },
    mounted() {
        // 判断是否显示加载更多/没有更多了
        if (this.cou > this.count.length) {
            this.isFlag = false;
        } else {
            this.isFlag = true;
        }
    },
    methods: {
        load() {
            this.loading = true;
        },
        more() {
            // 每次点击加三条
            this.cou += this.num;
            this.loading = false;
        },
    },
};
</script>
<style scoped>
.container {
    width: 100%;
    text-align: center;
    overflow: auto;
}
.container .list {
    color: pink;
    margin-bottom: 0.3rem;
    margin-top: 3rem;
}
.btn {
    margin: 0 auto;
    font-size: 0.36rem;
    font-family: PingFang;
    font-weight: 500;
    color: #999999;
}
</style>

 知识点解析:

1、使用infinite-scroll-disabled在vue中下拉加载数据

2、Vue的vue-infinite-scroll插件----无限加载 

v-infinite-scroll="load" 表示回调函数是load()
infinite-scroll-disabled="disabled" 表示由变量disabled决定是否执行load()false则执行load()true则不执行。(具体见1)

相关网站:

vue-infinite-scroll使用笔记 - 简书

https://github.com/ElemeFE/vue-infinite-scroll

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值