Usage with react-table?
See original GitHub issueI cloned the react-table’s Simple sandbox to get react-virtual working with it.
But I’m confused what to put instead of rowVirtualizer.virtualItems when using .map() inside tbody?
Also, confused if I have to wrap the whole table or just tbody as it’s the only thing that needs scrolling.
I think all the rows get rendered because the rendering is too slow for only 2000 items. I’m sure I must be doing something wrong.
Here’s my CodeSandbox 👉 https://codesandbox.io/s/react-table-basic-with-react-virtual-tq047?file=/src/App.js
And here’s the same code if I ever delete it:
import React from "react";
import styled from "styled-components";
import { useTable } from "react-table";
import { useVirtual } from "react-virtual";
import makeData from "./makeData";
const Styles = styled.div`
padding: 1rem;
table {
border-spacing: 0;
border: 1px solid black;
tr {
:last-child {
td {
border-bottom: 0;
}
}
}
th,
td {
margin: 0;
padding: 0.5rem;
border-bottom: 1px solid black;
border-right: 1px solid black;
:last-child {
border-right: 0;
}
}
}
`;
function Table({ columns, data }) {
// Use the state and functions returned from useTable to build your UI
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow
} = useTable({
columns,
data
});
const parentRef = React.useRef();
const rowVirtualizer = useVirtual({
size: rows.length,
parentRef,
estimateSize: React.useCallback(i => rows[i], []),
overscan: 5
});
// Render the UI for your table
return (
<div
ref={parentRef}
className="List"
style={{
height: `450px`,
width: `650px`,
overflow: "auto"
}}
>
<div
className="ListInner"
style={{
height: `${rowVirtualizer.totalSize}px`,
width: "100%",
position: "relative"
}}
>
<table {...getTableProps()}>
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th {...column.getHeaderProps()}>
{column.render("Header")}
</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map((row, i) => {
prepareRow(row);
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return (
<td {...cell.getCellProps()}>{cell.render("Cell")}</td>
);
})}
</tr>
);
})}
</tbody>
</table>
</div>
</div>
);
}
function App() {
const columns = React.useMemo(
() => [
{
Header: "Name",
columns: [
{
Header: "First Name",
accessor: "firstName"
},
{
Header: "Last Name",
accessor: "lastName"
}
]
},
{
Header: "Info",
columns: [
{
Header: "Age",
accessor: "age"
},
{
Header: "Visits",
accessor: "visits"
},
{
Header: "Status",
accessor: "status"
},
{
Header: "Profile Progress",
accessor: "progress"
}
]
}
],
[]
);
const data = React.useMemo(() => makeData(2000), []);
return (
<Styles>
<Table columns={columns} data={data} />
</Styles>
);
}
export default App;
Issue Analytics
- State:
- Created 3 years ago
- Comments:28
Top Results From Across the Web
React Table: A complete tutorial with examples
Some common use cases for React table UIs include displaying data for financial reports, sports leaderboards, and pricing and comparison ...
Read more >React Table: A Complete Guide - Hygraph
This guide will teach us how to efficiently use the react-table library to create tables in our React application.
Read more >React Table Tutorial:How to implement useTable and useFilter
Learn about React Table v7 and its new features in this React Table tutorial. Moreover, explore how can you implement useTable and useFilter ......
Read more >react-table examples - CodeSandbox
Learn how to use react-table by viewing and forking react-table example apps on CodeSandbox.
Read more >API Reference: useTable | React Table - TanStack
useTable is the root hook for React Table. To use it, pass it with an options object with at least a columns and...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

@tannerlinsley what if we would use pseudo elements on tbody and control them via css custom properties 🤔
https://codesandbox.io/s/poc-react-virtual-table-jyz0m
ETA on this? 👼