Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-virtual-list

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-virtual-list

Super simple virtualized list React higher-order component

  • 2.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
229
increased by19.9%
Maintainers
1
Weekly downloads
 
Created
Source

react-virtual-list Build Status

Super simple virtualized list higher-order component for React version ^15.0.0.

Check out the demo here

react-virtual-list allows you to display a large list of fixed-height items, while only rendering the items visible on the screen. This allows a large list to be rendered with much fewer DOM elements.

Some other benefits:

  • Zero dependencies
  • Small - ~4.2k gzipped & minified, ~4.9k minified http://i.imgur.com/DxRCuLv.png
  • Decent performance - demo page almost always stays over 60fps http://i.imgur.com/CHVCK9x.png
  • Keeps your components separate - as a higher-order component
  • Gives you control - doesn't force any particular markup, but gives you the necessary styles and data to use.

Legacy

If you're looking for documentation on version 1, supporting React ~0.13.x, it's here.

Installation

You can use npm to install react-virtual-list.

> npm install react-virtual-list --save

Usage

The ./lib/VirtualList.js module exports a single, ES5-compatible, CommonJS-accessible, component factory.

import VirtualList from 'react-virtual-list';

Your inner list component uses the virtual property to render the visible items, and set a style to set the overall list height and padding.

const MyList = ({
  virtual,
  itemHeight,
}) => (
  <ul style={virtual.style}>
    {virtual.items.map(item => (
      <li key={`item_${item.id}`} style={{height: itemHeight}}>
        Lorem ipsum dolor sit amet
      </li>
    ))}
  </ul>
);

Note: You should set keys on your list items.

Create the virtualized component.

const MyVirtualList = VirtualList()(MyList);

Write the JSX for the virtualized component with the necessary properties.

<MyVirtualList
  items={myBigListOfItems}
  itemHeight={100}
/>
Options

Options are used before the virtualized component can be created. This means that if you need to change an option after the initial render, you will need to recreate the virtualized component.

const options = {
  container: this.refs.container
};

const MyVirtualList = VirtualList(options)(MyList);
NameTypeDefaultDescription
containerDOM ElementwindowScrollable element that contains the list. Use this if you have a list inside an element with overflow: scroll.
Properties

These properties and any others set on your virtual component, such as className, will be passed down to the inner component.

NameTypeDefaultDescription
itemsArray-Full array of list items. Only the visible subset of these will be rendered.
itemHeightNumber-Height in pixels of a single item. You must have a CSS rule that sets the height of each list item to this value.
itemBufferNumber0Number of items that should be rendered before and after the visible viewport. Try using this if you have a complex list that suffers from a bit of lag when scrolling.
Example Usage

Check out demo/src/app.js and demo/src/ConfigurableExample.js for the example used in the demo.

Tests

Use npm test to run the tests using Jest. Not everything is currently tested yet!

Keywords

FAQs

Package last updated on 11 Feb 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc