更新记录

1.0.0(2025-11-11) 下载此版本

基础功能发布

  • 新增:基于 Vue 3 Composition API 实现的瀑布流组件。
  • 新增:支持 H5、App 和微信小程序等主要平台。
  • 新增:使用 uni-app 的 createSelectorQuery 进行动态高度计算,确保项目正确分列。
  • 新增:支持具名插槽(微信小程序)和作用域插槽(H5/App)两种方式传入自定义内容。
  • 新增:暴露 notify 事件,用于通知父组件瀑布流容器的最终高度,便于处理触底加载。
  • 优化:采用 display: grid 进行基础布局,提升性能和兼容性。

平台兼容性

uni-app(3.7.12)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× - × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - × - - × ×

1. 瀑布流布局 (WfGridFlow)

字段 建议值
瀑布流布局 WfGridFlow 瀑布流布局 (Vue 3/Grid)

2. 插件 ID (Plugin ID)

字段 建议值 备注
插件 ID z-waterfalls-flow

3. 简介 (Brief Introduction)

字段 建议值
简介 基于 Vue 3 Composition API 和 CSS Grid 布局构建的高性能、全兼容瀑布流组件。组件核心逻辑确保了高效的动态高度计算和准确的左右列排序,完美支持 App、H5 和微信小程序等跨端环境。

4. 标签 (Tags)

字段 建议值
标签 瀑布流, WaterFall, Grid, Vue3, uni-app, 列表, 跨端, 布局

5. 插件版本 (Version)

字段 建议值
插件版本 1.0.0

6. 更新日志 (Changelog)

### 1.0.0 基础功能发布

* **新增:** 基于 Vue 3 Composition API 和 `<script setup>` 语法实现核心组件。
* **布局:** 采用 CSS Grid 布局和 `1fr` 弹性宽度,实现简洁、高性能的双列布局。
* **兼容性:** 完美兼容 H5、App 和微信小程序,通过预编译指令 (`#ifdef MP-WEIXIN`) 区分处理具名插槽。
* **核心逻辑:** 使用 `uni.createSelectorQuery` 动态计算左右列高度,确保瀑布流排序准确性。
* **优化:** 针对 uni-app 环境,使用 `setTimeout(..., 0)` 解决页面渲染延迟导致的测量高度错误问题。

7. 插件使用说明 (Usage Instructions)

以下内容为 Markdown 格式的详细使用文档,您可以直接粘贴到插件市场的 "插件使用说明" 区域。

WfGridFlow 高性能瀑布流布局组件

概述

WfGridFlow 是一个基于 Vue 3 Composition API 和 uni-app Grid 布局实现的跨端瀑布流组件。它通过动态计算高度来决定项目插入左右哪一列,并提供完善的插槽机制和事件通知。

1. 引入组件

在您的页面 (.vue) 中导入和注册组件:

<script lang="ts" setup>
import WfGridFlow from "../../components/wf-grid-flow/wf-grid-flow.vue"; // 请根据您的目录结构修改路径
// ...
</script>

2. 基础使用 (模板)

由于微信小程序对具名插槽的特殊要求,使用时必须配合预编译指令 (#ifdef MP-WEIXIN) 来处理:

<template>
    <view>
        <WfGridFlow ref="wfListRef" :wfList="DataList" :updated="updated">
            <!-- #ifdef MP-WEIXIN -->
            <view class="wf-card" v-for="(item, index) in DataList" :key="index" :slot="`slot${item.customSId}`">
                <view class="card-content">
                    <image :src="item.image" mode="widthFix" class="card-image"></image>
                    <text class="card-title">{{item.title}}</text>
                </view>
            </view>
            <!-- #endif -->
            <!-- #ifndef MP-WEIXIN -->
            <template v-slot="{ item }">
                <view class="wf-card">
                    <view class="card-content">
                        <image :src="item.image" mode="widthFix" class="card-image"></image>
                        <text class="card-title">{{item.title}}</text>
                    </view>
                </view>
            </template>
            <!-- #endif -->
        </WfGridFlow>
    </view>
</template>

3. Props 属性说明

属性名 类型 默认值 是否必填 描述
wfList Array [] 瀑布流数据源列表。列表中每个 item 必须包含 customSIdid 作为唯一的插槽键。
updateNum Number 10 (保留属性)每次触发加载的条目数量。
updated Boolean false 强制更新标识。 当从顶部下拉刷新或使用筛选器时,将此值设为 true 可强制组件清空数据并重新渲染。
paddingC Boolean false 决定是否为瀑布流容器添加左右和顶部的边距 (10rpx/$page-padding)。

4. Events 事件说明

事件名 参数 描述
itemTap item (Object) 瀑布流卡片被点击时触发,返回当前被点击的数据对象。
notify bHeight (Number) 当所有数据渲染完毕后触发,返回瀑布流容器的最终最大高度,可用于父组件判断触底滚动。

5. 注意事项

  1. 数据结构wfList 中的每个数据项 必须 包含一个唯一的标识符(customSIdid),这对微信小程序具名插槽的正确渲染至关重要。
  2. 样式问题:瀑布流能否正确显示并计算高度,完全依赖于您在插槽中定义的卡片样式。请确保卡片内部的图片和内容能够自适应宽度:
    .card-image {
        width: 100%; /* 必须设置,确保图片撑满列宽 */
        display: block;
    }
    /* 外部的 wf-card 样式也需注意,不能设置固定宽度 */
  3. 重新加载/刷新:在执行下拉刷新操作时,请务必在获取到新的列表数据后,将 updated Prop 设为 true (然后在下一次数据更新后设为 false),以触发组件的重置逻辑。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。