私はReactの助けを借りて電子ベースのスタンドアロンアプリケーションを開発しており、テーブル(その多く)をenvolvesしています。テーブルのデータを表現するには、Facebook`s Fixed Data Tableを使用してください。それは非常に効率的で、全体的にも素晴らしいことが分かります。重要なのは、ロジックでオーバーブローされているので、かなり遅れていることです。反応のコンポーネントのレンダリングの負荷を最適化する
[ { columnName: value, columnName: value, ... , columnName: value },
{ columnName: value, columnName: value, ... , columnName: value },
... ,
{ columnName: value, columnName: value, ... , columnName: value } ]
をそしてFDTは、このデータをこのように動作します:一つ重要なことは、データがこのような形式でFDTに入るということです
|TABLE
|
v
COLUMN
| \
v v
CELL CELL
__________|
|
v
COLUMN
| \
v v
CELL CELL
__________|
|
v
COLUMN
| \
v v
CELL CELL
だから私はテーブルをレンダリングするために、そのコードを持っている:
<Table
rowsCount={rows.size}
headerHeight={51}
rowHeight={45}
width={tableWidth}
height={tableHeight}
>
{columnList.map((column, key) =>
<Column
key={key}
columnKey={key}
width={100}
header={
<SortHeaderCell label={column.columnname} />
}
cell={props =>
<FixedDataTableCellComponent
columnName={column.columnname}
row={rows.get(props.rowIndex)}
{...props}
/>
}
/>
)}
</Table>
を
それから問題が起こります。いくつかのものが変更されるたびに、レデューサーはいくつかのセルにデータを渡します。したがって、テーブル全体は返されたレンダーコードの中でこのcolumnList.map
を実行する必要があります。私は確かに分かりませんが、私はそれが特に多くの列を持つテーブルのラグを引き起こすと思います。
あなたはこの状況にいくつかの堅牢な解決策を提案してもらえますか? ありがとうございます。
私は、新しい小道具を受け取っていない列は再レンダリングしないと確信しています、そしてそれは既にfacebookからの人によって行われています。問題は、テーブル内のすべての小さな変更を持つcolumnList全体を反復する必要があることです。 – Syberic