Virtual React Example: Bootstrap (List)
List supports component
prop, so it can be easily integrated with Bootstrap or Material UI
import { memo } from "react";
import { useVirtual, List, createListItemRef } from "@af-utils/virtual-react";
import BootstrapListGroup from "react-bootstrap/ListGroup";
import BootstrapListItem from "react-bootstrap/ListGroupItem";
import type { ListItemProps } from "@af-utils/virtual-react";
/*
Normally full style should be used.
Truncating it manually, because only List is used
*/
import "./truncated-bootstrap-style.css";
const Item = memo<ListItemProps>(({ model, i }) => (
    <BootstrapListItem
        ref={createListItemRef(model, i)}
        style={{ borderLeft: 0 }}
    >
        row {i}
    </BootstrapListItem>
));
const BootstrapList = () => {
    const rows = useVirtual({
        itemCount: 50000,
        estimatedItemSize: 45
    });
    return (
        <List
            component={BootstrapListGroup}
            className="border"
            variant="flush"
            style={{
                // overriding default flex column for vertical list
                display: "block"
            }}
            model={rows}
        >
            {Item}
        </List>
    );
};
export default BootstrapList;