nutui二次封装上拉加载、下拉刷新组件

时间:2020-05-20
本文章向大家介绍nutui二次封装上拉加载、下拉刷新组件,主要包括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;
    display: flex;
    .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>

原文地址:https://www.cnblogs.com/fqh123/p/12923027.html