如何在React Table中使某些列向左对齐和某些列居中对齐-React

9 html javascript css reactjs react-table

你好堆栈溢出成员

这是列标题的数组。我希望第1列到第5列左对齐(第1列到第5列的所有标题,子标题和表数据单元格都左对齐),而我希望第6列到第8列的居中对齐(所有标题,子标题并将第1列到第5列的表格数据单元居中对齐)。请帮助我解决此问题,因为我只能使所有列居中或使所有列保持对齐。

我想在第6至8列标题中实现此特定样式,如下图所示。 图片

如果可以帮助我,请在CodeSandbox上提供演示

这是我的标题数据

const columns = [
 {
    Header: 'Column 1',
        columns: [
           {
               Header: 'S Column 1',
               accessor: 'firstName'
           }
      ]
  },
  {
      Header: 'Column 2',
       columns: [
         {
            Header: 'S Column 2',
            accessor: 'firstName'
          }
       ]
     },
    {
            Header: 'Column 3',
            columns: [
    {
            Header: 'S Column 3',
            accessor: 'firstName'
          }
         ]
   },
    {
          Header: 'Column 4',
          columns: [
    {
            Header: 'S column 4',
            accessor: 'firstName'
     }
    ]
      },
     {
     Header: 'Column 5',
    columns: [
    {
    Header: 'S column 5',
     accessor: 'firstName'
    }
   ]
   },
  {
     Header: 'Column 6',
     columns: [
  {
        Header: 'S column 6a',
        accessor: 'firstName'
  },
   {
        Header: 'S column 6b',
        accessor: 'firstName'
    },
    {
        Header: 'S column 6c',
        accessor: 'firstName'
     },
    {
         Header: 'S column 6d',
         accessor: 'firstName'
    }
  ]
     },
      {
     Header: 'Column 7',
     columns: [
     {
      Header: 'S column 7',
         accessor: 'firstName'
   }
    ]
     },
      {
        Header: 'Column 8',
        columns: [
      {
       Header: 'S Column 8a',
       accessor: 'firstName'
      },
     {
       Header: 'S Column 8b',
       accessor: 'firstName'
     },
    {
    Header: 'S Column 8c',
    accessor: 'firstName'
    },
    {
      Header: 'S Column 8d',
      accessor: 'firstName'
      }
     ]
      },
      ];
Run Code Online (Sandbox Code Playgroud)

kir*_*nvj 7

方法1:

这样的事情应该做的

columns: [
           {                 
              accessor: "firstName",
              Header: () => (
                    <div
                      style={{
                        textAlign:"right"
                      }}
                    >S Column 1</div>)
           },
Run Code Online (Sandbox Code Playgroud)

如果可以帮助我,请在CodeSandbox上提供演示

在这里

在此处输入图片说明

OP评论后更新

但对于将居中对齐的列,其子像元数据也将居中对齐

像这样操作单元格样式

Cell: row => <div style={{ textAlign: "center" }}>{row.value}</div>
Run Code Online (Sandbox Code Playgroud)

在这里播放

在此处输入图片说明

方法2:

使用可以使用headerClassName并指定一个类名,在该类中您可以指定规则text-align:center

所以代码看起来像

const columns = [{
  Header: 'Column 5',
  accessor: 'name',
  headerClassName: 'your-class-name'
},
{
......
}
]
Run Code Online (Sandbox Code Playgroud)

方法3:

如果标题很多,那么在所有标题中添加headerClassName会很麻烦。在这种情况下,您可以在ReactTableDefaults

import ReactTable, {ReactTableDefaults} from 'react-table';

const columnDefaults = {...ReactTableDefaults.column, headerClassName: 'text-left-classname'}
Run Code Online (Sandbox Code Playgroud)

并在ReactTable中像这样使用

<ReactTable
 ...
 ...
 columns = { columnDefaults }
 />
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用的是引导程序,则可以将内置类分配text-centerheaderClassName