Blog>
Snippets

Optimizing Large Datasets Rendering with React-Window

Illustrate the use of the 'VariableSizeList' component from React-Window to efficiently render a large and dynamic dataset, adjusting to varying row heights.
import React from 'react';
import { VariableSizeList as List } from 'react-window';
First step is to import React and the VariableSizeList component from react-window. The VariableSizeList is renamed to List for convenience.
const Row = ({ index, style }) => (
    <div style={style}>
        {/* Render your row based on the index */}
        `Row ${index}`
    </div>
);
Define the Row component that renders each item in the list. It receives index and style as props. The style prop is used to adjust the row's position and size dynamically.
const getItemSize = index => (index % 2 === 0 ? 50 : 100);
Defines a function to determine the size of each item dynamically. This example returns a height of 50px for even rows and 100px for odd rows.
const MyVariableSizeList = () => (
    <List
        height={500}
        itemCount={1000}
        itemSize={getItemSize}
        width={'100%'}
    >
        {Row}
    </List>
);
This component initializes and renders the VariableSizeList. It sets the height of the list, the number of items, the dynamic itemSize function, and the width of the list. Then it renders rows using the Row component.
export default MyVariableSizeList;
Exports the MyVariableSizeList component so it can be used in other parts of the application.