当前位置:首页 > 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 moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何读

react如何读

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

react如何安装

react如何安装

安装React的步骤 确保已安装Node.js(建议版本12或更高),可通过以下命令检查版本: node -v npm -v 使用Create React App快速搭建项目(推荐): npx c…

react 如何遍历

react 如何遍历

遍历数组 在React中遍历数组通常使用map方法,它会返回一个新的数组。map是处理数组并渲染列表元素的首选方法。 const items = ['Apple', 'Banana', 'Cherr…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…