当前位置:首页 > React

react实现竖向table

2026-01-27 03:22:18React

实现竖向表格的布局方案

在React中实现竖向表格(即表头在左侧,数据向右展开的布局)可通过CSS布局调整或组件结构重组完成。以下是几种常见方法:

使用CSS Flexbox或Grid布局

通过旋转容器或调整显示方向实现竖向效果:

react实现竖向table

// 竖向表格组件示例
const VerticalTable = ({ data }) => {
  return (
    <div style={{ display: 'flex' }}>
      {/* 表头列 */}
      <div style={{ display: 'flex', flexDirection: 'column' }}>
        {Object.keys(data[0]).map((key) => (
          <div key={key} style={{ padding: '8px', border: '1px solid #ddd' }}>
            {key}
          </div>
        ))}
      </div>

      {/* 数据列 */}
      {data.map((item, index) => (
        <div key={index} style={{ display: 'flex', flexDirection: 'column' }}>
          {Object.values(item).map((value, i) => (
            <div key={i} style={{ padding: '8px', border: '1px solid #ddd' }}>
              {value}
            </div>
          ))}
        </div>
      ))}
    </div>
  );
};

使用HTML表格属性调整

通过转置数据后渲染常规表格:

const VerticalTable = ({ data }) => {
  const headers = Object.keys(data[0]);
  const transposedData = headers.map(header => ({
    header,
    values: data.map(item => item[header])
  }));

  return (
    <table style={{ borderCollapse: 'collapse' }}>
      <tbody>
        {transposedData.map((row, i) => (
          <tr key={i}>
            <td style={{ border: '1px solid #ddd', padding: '8px' }}>{row.header}</td>
            {row.values.map((value, j) => (
              <td key={j} style={{ border: '1px solid #ddd', padding: '8px' }}>
                {value}
              </td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
};

使用第三方库

如React-Table等库支持自定义渲染方式:

react实现竖向table

import { useTable } from 'react-table';

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

  return (
    <table {...getTableProps()}>
      <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>
  );
};

样式优化建议

添加以下CSS提升可读性:

.vertical-table {
  display: flex;
  overflow-x: auto;
}
.vertical-column {
  min-width: 120px;
}
.fixed-header {
  position: sticky;
  left: 0;
  background: white;
  z-index: 1;
}

响应式处理

针对移动端可添加媒体查询:

@media (max-width: 768px) {
  .vertical-table {
    flex-direction: column;
  }
}

以上方案可根据实际需求选择,Flexbox方案适合简单布局,数据转置方案保持语义化HTML结构,第三方库方案适合复杂交互需求。

标签: reacttable
分享给朋友:

相关文章

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何查

react如何查

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

react如何打包

react如何打包

打包 React 项目的基本步骤 React 项目通常使用 create-react-app 或类似的脚手架工具创建,这些工具内置了打包功能。以下是打包 React 项目的详细方法: 安装依赖并构建…

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一个…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…

react如何启动6

react如何启动6

安装 Node.js 和 npm/yarn 确保系统中已安装 Node.js(建议版本 16 或更高)和 npm/yarn。可通过以下命令验证版本: node -v npm -v 创建 Reac…