React-Table ライブラリで列幅を設定する

Irakli Tchigladze 2023年6月21日
  1. react-table ライブラリで列幅をカスタマイズする
  2. .getHeaderProps() メソッドを使用して react-table ライブラリで列幅を指定する
React-Table ライブラリで列幅を設定する

React は、フロントエンド アプリケーションを構築するための最も一般的なフレームワークです。 最新のアプリには多くの情報が含まれているのが普通です。 生データをテーブルに整理すると、膨大な情報を消化しやすくなります。

react-table ライブラリは、React でテーブルを作成するために必要なロジックを提供します。 ただし、テーブルの UI は自分で作成する必要があります。

この記事では、列の幅を調整するなど、ユーザーがテーブルの外観をカスタマイズする方法を示したいと思います。

react-table ライブラリで列幅をカスタマイズする

react-table は、React でテーブルを作成するためのヘッドレス UI ライブラリです。 実際の UI ではなく、ロジックのみを提供します。

React 開発者は、react-table ライブラリの useTable フックを使用して、生データと列情報に基づいてテーブルを作成できます。

この Table コンポーネントを見てみましょう:

function Table({ 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({
                  style: {
                    minWidth: 200,
                    width: 250,
                    border: "1px solid black"
                  }
                })}
              >
                {column.render("Header")}
              </th>
            ))}
          </tr>
        ))}
      </thead>
      <tbody {...getTableBodyProps()}>
        {rows.map((row, i) => {
          prepareRow(row);
          return (
            <tr {...row.getRowProps()}>
              {row.cells.map((cell) => {
                return <td {...cell.getCellProps()}>{cell.render("Cell")}</td>;
              })}
            </tr>
          );
        })}
      </tbody>
    </table>
  );
}

useTable フックで作成されたテーブルの基本的な例です。 その中で、表のスタイル設定に HTML 要素を使用しました。

<table> HTML コンポーネントは最上位レベルにあります。 <thead><tr><th> などの要素もあります。

自分でコードを調べたい場合は、CodeSandbox で行うことができます。

.getHeaderProps() メソッドを使用して react-table ライブラリで列幅を指定する

useTable() フックで作成されたテーブルがある場合は、UI 要素を自分で定義する必要があります。 そこで、<th> HTML の出番です。

テーブルのヘッダーを定義します。 つまり、列の一番上にあるセルにラベルを付けます。

上記の例では、.getHeaderProps() メソッドを 1つの引数で使用しました: スタイル オブジェクトは、<th> 要素のデフォルト スタイルをオーバーライドします。

実際のコードを見てみましょう。

<th
    {...column.getHeaderProps({
                              style: {
                              minWidth: 200,
                              width: 250,
                              border: "1px solid black"
                  }
                })}
              >

これは、react-table ライブラリを使用してテーブルを構築するときに列幅を指定する最も簡単な方法です。 この場合、列のサイズを調整するために minWidth および width パラメーターを指定しました。

実際には、オブジェクトとしてスタイル設定されている限り、任意の CSS プロパティを適用できます。

たとえば、min-width プロパティをインライン スタイルとして適用する場合は、minWidth になります。 これは、すべてのスタイルをオブジェクトとしてフォーマットする必要があるためです。

コードをチェックアウトし、CodeSandbox で自分で編集してみることができます。

Irakli Tchigladze avatar Irakli Tchigladze avatar

Irakli is a writer who loves computers and helping people solve their technical problems. He lives in Georgia and enjoys spending time with animals.

LinkedIn

関連記事 - React Table