()
| 143 | } |
| 144 | |
| 145 | function GridVirtualizerFixed() { |
| 146 | const parentRef = React.useRef(null) |
| 147 | |
| 148 | const rowVirtualizer = useVirtualizer({ |
| 149 | count: 10000, |
| 150 | getScrollElement: () => parentRef.current, |
| 151 | estimateSize: () => 35, |
| 152 | overscan: 5, |
| 153 | }) |
| 154 | |
| 155 | const columnVirtualizer = useVirtualizer({ |
| 156 | horizontal: true, |
| 157 | count: 10000, |
| 158 | getScrollElement: () => parentRef.current, |
| 159 | estimateSize: () => 100, |
| 160 | overscan: 5, |
| 161 | }) |
| 162 | |
| 163 | return ( |
| 164 | <> |
| 165 | <div |
| 166 | ref={parentRef} |
| 167 | className="List" |
| 168 | style={{ |
| 169 | height: `500px`, |
| 170 | width: `500px`, |
| 171 | overflow: 'auto', |
| 172 | }} |
| 173 | > |
| 174 | <div |
| 175 | style={{ |
| 176 | height: `${rowVirtualizer.getTotalSize()}px`, |
| 177 | width: `${columnVirtualizer.getTotalSize()}px`, |
| 178 | position: 'relative', |
| 179 | }} |
| 180 | > |
| 181 | {rowVirtualizer.getVirtualItems().map((virtualRow) => ( |
| 182 | <React.Fragment key={virtualRow.key}> |
| 183 | {columnVirtualizer.getVirtualItems().map((virtualColumn) => ( |
| 184 | <div |
| 185 | key={virtualColumn.key} |
| 186 | className={ |
| 187 | virtualColumn.index % 2 |
| 188 | ? virtualRow.index % 2 === 0 |
| 189 | ? 'ListItemOdd' |
| 190 | : 'ListItemEven' |
| 191 | : virtualRow.index % 2 |
| 192 | ? 'ListItemOdd' |
| 193 | : 'ListItemEven' |
| 194 | } |
| 195 | style={{ |
| 196 | position: 'absolute', |
| 197 | top: 0, |
| 198 | left: 0, |
| 199 | width: `${virtualColumn.size}px`, |
| 200 | height: `${virtualRow.size}px`, |
| 201 | transform: `translateX(${virtualColumn.start}px) translateY(${virtualRow.start}px)`, |
| 202 | }} |
nothing calls this directly
no test coverage detected