组件
Waterfall 瀑布流

Waterfall 瀑布流

瀑布流布局组件,用于展示不规则高度的内容,支持无限滚动加载和动画效果。

何时使用

  • 展示大量图片或卡片时,需要按照一定规律排列。
  • 需要无限滚动加载更多内容时。
  • 内容高度不一致,需要紧凑布局时。

代码演示

基本使用

自定义多列

滚动加载更多

API

Waterfall

参数说明类型默认值
dataSource数据源any[][]
columns列数number2
gutter列间距(单位:px)number16
defaultItemHeight默认项目高度(单位:px)number200
enableAnimation是否启用动画booleantrue
animationDuration动画持续时间(单位:ms)number300
animationEasing动画缓动函数string'ease-out'
renderItem自定义渲染项(item: any, index: number) => React.ReactNode-
className容器类名string-
style容器样式React.CSSProperties-
loading是否正在加载更多booleanfalse
hasMore是否还有更多数据booleantrue
onLoadMore加载更多的回调函数() => void-
loadingComponent自定义加载中显示内容React.ReactNode'加载中...'
noMoreComponent自定义没有更多数据显示内容React.ReactNode'没有更多了'

注意事项

  1. 图片加载处理

    • 组件会自动等待图片加载完成后再计算高度
    • 如果图片加载时间超过 200ms,会先使用默认高度进行布局
    • 图片加载完成后会自动更新布局
  2. 性能优化

    • 建议给 dataSource 中的每个项目添加唯一的 key
    • 大量数据时建议使用虚拟滚动优化
    • 图片建议使用 CDN 并进行适当压缩
  3. 动画效果

    • 动画仅在项目首次渲染和布局更新时触发
    • 可以通过 enableAnimation 属性关闭动画
    • animationEasing 支持所有 CSS transition-timing-function 的值
  4. 响应式布局

    • 可以通过监听窗口大小变化动态调整 columns 属性
    • 建议配合 CSS 媒体查询使用
    • 列数改变时会自动重新计算布局