v3-waterfall瀑布流使用

业务需求:实现一个瀑布流布局,然后自适应宽高比例。可以直接安装v3-waterfal组件,然后gitub会有api文档。如果有新的问题可以直接再Github提问issue给原作者,原作者回的速度很快

官网v3-waterfall

我这里需求是在整个页面进行滚动。所以不需要设置父元素的高。

我理解的逻辑是一进来就开始调接口。然后触底加载的时候继续调接口,直到接口数据返回为空。那会显示加载完的文字

  <v3-waterfall
            :list="list" //瀑布流数据
            :colWidth="285"	//瀑布留每一条数据的宽
            style="min-height: calc(100vh - 130px)"	//自定义样式
            :virtual-time="400" //开启虚拟列表
            :virtual-length="1000"	//不存在视图内多远开始虚拟隐藏
            :isLoading="loading" //加载状态
            :isOver="over" //是否全部加载完成
            :animation="false"
            :gap="10"
            :bottomGap="10"
            overText="There are no more cards, pls try to creating new recognition cards for our colleagues." //加载完的文字
            ref="v3WaterfallRef" //这个就是用来重新加载绑定的ref
            class="waterfall"
            @scrollReachBottom="getNext" //触发加载
        >
         <template v-slot:default="slotProp">
         </template>
 </v3-waterfall>
const list = ref<any[]>([]);
const over = ref(false);
const loading: any = ref(false);
const images = ref<any[]>([]);
const offset = ref(0);

const getNext: () => Promise<void> = async (): Promise<void> => {
    if (isLoad) return;
    isLoad = true;
    await fetchList();
    isLoad = false;
};

const fetchList = async (): Promise<void> => {
    await loadImages(); //在这里调接口
    list.value = list.value.concat(images.value);
    offset.value = list.value.length;
};
async function loadImages() {
  const cardList: any = await getCardlist({limit: 20,offset: offset.value});
  images.value = cardList
  dataLoading.value = false;
  loading.value = false;
  offset.value = offset.value + images.value.length;
  if (images.value.length == 0) over.value = true;
}

//如果需要重新加载页面(比如有筛选项,数据会发生变化,就需要传参之前调reRender.调完reRender在去重新调getNext)可以使用这个方法
const reRender = () => {
    v3WaterfallRef.value?.reRender();
};
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值