0.0.2 • Published 4 years ago

react-tiny-virtual-grid v0.0.2

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

react-tiny-virtual-grid

虚拟列表 + 类似Grid布局

根据传入不同列数,调整元素位置

在此基础上可以做到当列数动态改变后,给元素的布局添加动画

npm.io

Installation

    npm install react-tiny-virtual-grid

Usage

  <VirtualGrid
    dataSource={list}
    itemHeight={200}
    bufferSize={2}
    columns={columns}
  >
    {(item, [x, y], stop, index) => (
      <div
        key={index}
        style={{
          position: "absolute",
          left: `${x * 300}px`,
          top: `${y * 200}px`,
          width: 300,
          height: 200,
          transition: stop ? "all 300ms" : "unset"
        }}
      >
        {item}
      </div>
    )}
  </VirtualGrid>

Props

属性说明类型默认值
dataSource渲染的数据any[]-
itemHeight每行元素的高度number-
bufferSize下方缓冲行数number0
columns列数number-
children渲染的函数(item: T,pos: number, number,stop: boolean,index: number) => React.ReactElement-

注意

如果要实现动画效果,需要使用Render Props的参数index作为key

目前还没有想到好的方法来实现行数增加时也能进行动画效果。如果行数为1,这时候假如显示了4个元素,将行数变为2,元素从4个变为了8个,凭空新增的元素,没法做到动画。现在解决的想法是需要渲染一个固定长度的数组,这样需要传入一个最大行数,没想到好办法

TODO

  • 完整缓冲区,防止闪屏
  • 行数增加时也添加动画
  • 动态元素高度