React Data Grid Lite

Examples

📡 Consuming Remote API

This example shows how to fetch and display data from a remote API using react-data-grid-lite. It demonstrates how to:

  • Dynamically build column definitions from API response keys.
  • Transform and format certain columns.
  • Exclude or hide unnecessary fields.
  • Render the data in a performant, paginated grid.

🔗 API Used

fakerapi.it – Returns fake user data for testing:

GET https://fakerapi.it/api/v1/users?_quantity=100

🧩 Dynamic Column Mapping

Column definitions are generated by inspecting API response keys and applying logic to:

  • Rename columns (e.g. firstnameName)
  • Hide redundant columns

This approach is flexible and adapts to schema changes without hardcoding each field.

🚀 Code

import React, { useEffect, useState } from 'react';
import DataGrid, { trackPromise } from 'react-data-grid-lite';

function App() {
    const [users, setUsers] = useState([]);
    const [userColumns, setUserColumns] = useState({});
    useEffect(() => {
        const promise = fetch('https://fakerapi.it/api/v1/users?_quantity=1000')
            .then(response => response.json())
            .then(data => {
                const Columns = Object.keys(data.data[0])
                setUserColumns(Columns.map((val) => {
                    if (val.toLowerCase() === 'id')
                        return { name: val, alias: 'ID', width: '100px' }
                    else if (val.toLowerCase() === 'uuid')
                        return { name: val, alias: 'UUID' }
                    else if (val.toLowerCase() === 'firstname')
                        return { name: val, alias: 'Name' }
                    else return { name: val, hidden: true }
                }));
                setUsers(data.data);
            }).catch(error => { console.error('Error fetching data:', error); });
        trackPromise(promise);
    }, []);

    return (
       <DataGrid columns={userColumns} data={users} pageSize={20} width={"1200px"} />
    )
}

export default App

Have questions?

Contact on GitHub.