当前位置:首页 > React

react表格如何获取每行数据

2026-01-25 18:41:53React

获取 React 表格每行数据的方法

在 React 中,可以通过以下几种方式获取表格中每一行的数据:

通过事件处理函数传递行数据

在渲染表格行时,将行数据作为参数传递给事件处理函数:

const handleRowClick = (rowData) => {
  console.log(rowData);
};

return (
  <table>
    {data.map((row) => (
      <tr key={row.id} onClick={() => handleRowClick(row)}>
        <td>{row.name}</td>
        <td>{row.age}</td>
      </tr>
    ))}
  </table>
);

使用 ref 获取 DOM 元素数据

通过 ref 获取表格行的 DOM 元素,然后从中提取数据:

const rowRefs = useRef([]);

return (
  <table>
    {data.map((row, index) => (
      <tr 
        key={row.id} 
        ref={(el) => (rowRefs.current[index] = el)}
        onClick={() => console.log(rowRefs.current[index].dataset)}
        data-id={row.id}
        data-name={row.name}
      >
        <td>{row.name}</td>
        <td>{row.age}</td>
      </tr>
    ))}
  </table>
);

通过状态管理存储选中行

使用状态来跟踪当前选中的行:

const [selectedRow, setSelectedRow] = useState(null);

return (
  <table>
    {data.map((row) => (
      <tr 
        key={row.id}
        onClick={() => setSelectedRow(row)}
        style={{ backgroundColor: selectedRow?.id === row.id ? '#eee' : '' }}
      >
        <td>{row.name}</td>
        <td>{row.age}</td>
      </tr>
    ))}
  </table>
);

使用第三方表格库

许多 React 表格库(如 react-table、Material-UI Table)提供了内置的行数据获取方法:

import { useTable } from 'react-table';

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

return (
  <table {...getTableProps()}>
    <tbody {...getTableBodyProps()}>
      {rows.map((row) => {
        prepareRow(row);
        return (
          <tr {...row.getRowProps()} onClick={() => console.log(row.original)}>
            {row.cells.map((cell) => (
              <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
            ))}
          </tr>
        );
      })}
    </tbody>
  </table>
);

通过表单元素获取

如果表格包含可编辑的表单元素,可以通过表单提交获取所有行数据:

react表格如何获取每行数据

const handleSubmit = (e) => {
  e.preventDefault();
  const formData = new FormData(e.target);
  const rowsData = data.map((row) => ({
    ...row,
    value: formData.get(`row-${row.id}`)
  }));
  console.log(rowsData);
};

return (
  <form onSubmit={handleSubmit}>
    <table>
      {data.map((row) => (
        <tr key={row.id}>
          <td>
            <input 
              name={`row-${row.id}`} 
              defaultValue={row.value} 
            />
          </td>
        </tr>
      ))}
    </table>
    <button type="submit">提交</button>
  </form>
);

选择哪种方法取决于具体需求,简单交互可以直接传递行数据,复杂场景可能需要结合状态管理或使用专门的表格库。

标签: 表格数据
分享给朋友:

相关文章

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,如边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin:…

vue表格实现教学

vue表格实现教学

基础表格实现 使用 Vue 的 v-for 指令渲染数组数据到表格中。 <template> <table> <thead> <…

vue element实现表格

vue element实现表格

Vue + Element UI 实现表格 Element UI 提供了强大的表格组件 el-table,结合 Vue 可以快速实现数据展示、排序、筛选等功能。 基础表格实现 安装 Element…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

vue实现数据增加

vue实现数据增加

Vue 实现数据增加的方法 在 Vue 中实现数据增加通常涉及操作数据源(如数组或对象),并通过响应式机制更新视图。以下是几种常见的方法: 使用 v-model 绑定表单输入 通过表单输入绑定数据,…

vue实现简单表格

vue实现简单表格

使用 Vue 实现简单表格 Vue 提供了多种方式实现表格功能,以下是基于 Vue 3 的两种常见方法: 基础表格实现 通过 v-for 指令循环渲染表格数据: <template>…