import React from 'react' import styled from 'styled-components' import { useTable, useColumnOrder } from 'react-table' 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; background: white; :last-child { border-right: 0; } } } ` function shuffle(arr) { arr = [...arr] const shuffled = [] while (arr.length) { const rand = Math.floor(Math.random() * arr.length) shuffled.push(arr.splice(rand, 1)[0]) } return shuffled } function Table({ columns, data }) { const { getTableProps, getTableBodyProps, headerGroups, rows, visibleColumns, prepareRow, setColumnOrder, state, } = useTable( { columns, data, }, useColumnOrder ) const randomizeColumns = () => { setColumnOrder(shuffle(visibleColumns.map(d => d.id))) } return ( <> {headerGroups.map((headerGroup, i) => ( {headerGroup.headers.map(column => ( ))} ))} {rows.slice(0, 10).map((row, i) => { prepareRow(row) return ( {row.cells.map((cell, i) => { return })} ) })}
{column.render('Header')}
{cell.render('Cell')}
        {JSON.stringify(state, null, 2)}
      
) } 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(10), []) return ( ) } export default App