Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@react-aria/virtualizer
Advanced tools
@react-aria/virtualizer is a library that provides utilities for efficiently rendering large lists and collections in React applications. It leverages virtualization techniques to only render the visible items, improving performance and reducing memory usage.
Virtualized List
This feature allows you to create a virtualized list where only the visible items are rendered. This improves performance for large lists by reducing the number of DOM elements.
import { useVirtualizer } from '@react-aria/virtualizer';
import { useRef } from 'react';
function VirtualizedList({ items }) {
const parentRef = useRef();
const { virtualItems, totalSize } = useVirtualizer({
count: items.length,
getScrollElement: () => parentRef.current,
estimateSize: () => 35
});
return (
<div ref={parentRef} style={{ overflow: 'auto', height: '400px' }}>
<div style={{ height: totalSize }}>
{virtualItems.map(virtualRow => (
<div
key={virtualRow.index}
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
transform: `translateY(${virtualRow.start}px)`
}}
>
{items[virtualRow.index]}
</div>
))}
</div>
</div>
);
}
Virtualized Grid
This feature allows you to create a virtualized grid where only the visible items are rendered. This is useful for displaying large grids of items efficiently.
import { useVirtualizer } from '@react-aria/virtualizer';
import { useRef } from 'react';
function VirtualizedGrid({ items, columnCount }) {
const parentRef = useRef();
const { virtualItems, totalSize } = useVirtualizer({
count: items.length,
getScrollElement: () => parentRef.current,
estimateSize: () => 100
});
return (
<div ref={parentRef} style={{ overflow: 'auto', height: '400px' }}>
<div style={{ height: totalSize }}>
{virtualItems.map(virtualItem => (
<div
key={virtualItem.index}
style={{
position: 'absolute',
top: 0,
left: 0,
width: `${100 / columnCount}%`,
transform: `translate(${(virtualItem.index % columnCount) * 100}%, ${Math.floor(virtualItem.index / columnCount) * 100}px)`
}}
>
{items[virtualItem.index]}
</div>
))}
</div>
</div>
);
}
react-window is a library for efficiently rendering large lists and tabular data in React. It provides similar virtualization techniques to @react-aria/virtualizer but is more focused on simplicity and performance. It offers a smaller API surface and is easier to integrate for basic use cases.
react-virtualized is a comprehensive library for rendering large lists and collections in React. It offers a wide range of features including grids, tables, and infinite loaders. Compared to @react-aria/virtualizer, it provides more flexibility and customization options but can be more complex to set up and use.
react-infinite-scroll-component is a library for implementing infinite scrolling in React applications. It focuses on loading more items as the user scrolls, rather than virtualizing the entire list. This can be useful for scenarios where data is loaded incrementally from a server.
This package is part of react-spectrum. See the repo for more details.
FAQs
Spectrum UI components in React
The npm package @react-aria/virtualizer receives a total of 238,043 weekly downloads. As such, @react-aria/virtualizer popularity was classified as popular.
We found that @react-aria/virtualizer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.