UNPKG

react-virtualized-cssgrid

Version:
156 lines (111 loc) 4.38 kB
# React Virtualized CSS Grid > React Virtualized CSS Grid is a React component for efficiently rendering a large, scrollable list of items while utilizing CSS Grid. Inspired by `react-virtualized` to render a virtualized grid of an arbitrary number of rows and columns based on the provided row and container heights to calculate and generate virtualized list items. ## Demo TBD ## Installation ``` npm i react-virtualized-cssgrid ``` ## Usage ### Functional Stateless Component ```js import React from 'react'; import VirtualizedCSSGrid from 'react-virtualized-cssgrid'; function MyList({ items }) { return ( <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={360} columns={3} listLength={items.length}> {items.map(el => ( <img key={el} src={`https://hiring.verkada.com/thumbs/${el}.jpg`} style={{ width: 360 }} /> ))} </VirtualizedCSSGrid> ); } ``` ### Functional Stateless Component ```js import React from 'react'; import VirtualizedCSSGrid from 'react-virtualized-cssgrid'; class List extends Component { render() { return ( <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={360} columns={3} listLength={items.length}> {items.map(el => ( <img key={el} src={`https://hiring.verkada.com/thumbs/${el}.jpg`} style={{ width: 360 }} /> ))} </VirtualizedCSSGrid> ); } } ``` ## Props ### `children` `children` is required and must be provided as an array within the `<VirtualizedCSSGrid />` component. ```js <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={360} columns={3} listLength={items.length}> {items.map(el => ( <img key={el} src={`https://hiring.verkada.com/thumbs/${el}.jpg`} style={{ width: 360 }} /> ))} </VirtualizedCSSGrid> ``` ### `className` If `className` is provided, it will be attached to the outermost Grid `div`. ```js function MyList({ items }) { return <VirtualizedItemGrid className="my-grid-class" containerWidth={1080} rowHeight={240} columnWidth={360} columns={3} listLength={items.length} />; } ``` ### `containerWidth` `className` is required and must be a number or a function which returns a number. It represents the max width of the outermost grid container `div`. ```js function getContainerWidth({ containerWidth }) { return containerWidth; } function MyList() { return <VirtualizedCSSGrid containerWidth={getContainerWidth} rowHeight={240} columnWidth={360} columns={3} listLength={items.length} />; } ``` ### `rowHeight` `rowHeight` is required and must be a number or a function which returns a number. It represents the row height of each grid row, which will also represent the height a single grid element. ```js function getRowHeight({ rowHeight }) { return rowHeight; } function MyList({ items }) { return <VirtualizedCSSGrid containerWidth={1080} rowHeight={getRowHeight} columnWidth={360} columns={3} listLength={items.length} />; } ``` ### `columnWidth` `columnWidth` is required and must be a number or a function which returns a number. It represents the column width of each grid column, which will also represent the width a single grid element. ```js function getColumnWidth({ columnWidth }) { return columnWidth; } function MyList({ items }) { return <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={getColumnWidth} columns={3} listLength={items.length} />; } ``` ### `columns` `columns` is required and must be a number or a function which returns a number. It represents the number of columns provided in each row container. ```js function getColumns({ columns }) { return columns; } function MyList({ items }) { return <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={360} columns={getColumns} listLength={items.length} />; } ``` ### `listLength` `listLength` is required and must be a number or a function which returns a number. It represents the total number of elements provided. ```js function getListLength({ listLength }) { return listLength; } function MyList({ items }) { return <VirtualizedCSSGrid containerWidth={1080} rowHeight={240} columnWidth={360} columns={3} listLength={getListLength} />; } ```