当前位置:首页 > React

react table组件实现

2026-01-27 01:27:21React

实现React Table组件的方法

使用原生HTML表格

通过React组件封装原生HTML的<table>元素,结合状态管理实现动态渲染。适合简单表格需求,无需额外依赖。

function SimpleTable({ data }) {
  return (
    <table>
      <thead>
        <tr>
          {Object.keys(data[0]).map((key) => (
            <th key={key}>{key}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {data.map((row, index) => (
          <tr key={index}>
            {Object.values(row).map((value, i) => (
              <td key={i}>{value}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
}

使用react-table库

react-table是轻量级无UI的表格工具库,提供排序、分页、过滤等功能,需自行设计样式。

import { useTable } from 'react-table';

function ReactTable({ columns, data }) {
  const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =
    useTable({ columns, data });

  return (
    <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 => {
          prepareRow(row);
          return (
            <tr {...row.getRowProps()}>
              {row.cells.map(cell => (
                <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
              ))}
            </tr>
          );
        })}
      </tbody>
    </table>
  );
}

集成Material-UI表格

Material-UI提供现成的样式化表格组件,适合需要快速实现Material Design风格的场景。

import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '@mui/material';

function MuiTable({ data }) {
  return (
    <TableContainer>
      <Table>
        <TableHead>
          <TableRow>
            {Object.keys(data[0]).map((key) => (
              <TableCell key={key}>{key}</TableCell>
            ))}
          </TableRow>
        </TableHead>
        <TableBody>
          {data.map((row, index) => (
            <TableRow key={index}>
              {Object.values(row).map((value, i) => (
                <TableCell key={i}>{value}</TableCell>
              ))}
            </TableRow>
          ))}
        </TableBody>
      </Table>
    </TableContainer>
  );
}

实现可编辑表格

通过状态管理和事件处理实现单元格编辑功能,适用于需要用户交互的场景。

function EditableTable({ initialData }) {
  const [data, setData] = useState(initialData);

  const handleChange = (rowIndex, key, value) => {
    const newData = [...data];
    newData[rowIndex][key] = value;
    setData(newData);
  };

  return (
    <table>
      <thead>...</thead>
      <tbody>
        {data.map((row, rowIndex) => (
          <tr key={rowIndex}>
            {Object.entries(row).map(([key, value], colIndex) => (
              <td key={colIndex}>
                <input
                  value={value}
                  onChange={(e) => handleChange(rowIndex, key, e.target.value)}
                />
              </td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
}

虚拟滚动优化

使用react-window等库实现虚拟滚动,解决大数据量渲染性能问题。

react table组件实现

import { FixedSizeList as List } from 'react-window';

function VirtualizedTable({ columns, data }) {
  const Row = ({ index, style }) => (
    <div style={style}>
      {columns.map(column => (
        <span key={column.key}>{data[index][column.key]}</span>
      ))}
    </div>
  );

  return (
    <List
      height={500}
      itemCount={data.length}
      itemSize={50}
      width="100%"
    >
      {Row}
    </List>
  );
}

标签: 组件react
分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

react 如何继承

react 如何继承

在React中,组件继承并非推荐的设计模式(官方更推崇组合优于继承),但技术上仍可通过以下方式实现类似效果: 使用ES6类继承 通过extends关键字继承父组件类,子组件可访问父组件的生命…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致。…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…