react-tiny-virtual-grid
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

react-tiny-virtual-grid

虚拟列表 + 类似Grid布局

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

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

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: `${* 300}px`,
          top: `${* 200}px`,
          width: 300,
          height: 200,
          transition: stop ? "all 300ms" : "unset"
        }}
      >
        {item}
      </div>
    )}
  </VirtualGrid>

Props

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

注意

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

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

TODO

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

Readme

Keywords

none

Package Sidebar

Install

npm i react-tiny-virtual-grid

Weekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

15.1 kB

Total Files

9

Last publish

Collaborators

  • zhangyu1995