Prevent TypeError exception on missing column.

Summary: Fix a TypeError exception in TableHead.tsx when an ordered column is not present in the row.

Reviewed By: aigoncharov

Differential Revision: D36497494

fbshipit-source-id: 18c961468fc2bc3cca16290fd9e6c973e5e18ebf
This commit is contained in:
Muzammil Mahmood
2022-05-20 02:54:00 -07:00
committed by Facebook GitHub Bot
parent a7b148fcc2
commit ec6f732b09
2 changed files with 16 additions and 5 deletions

View File

@@ -202,7 +202,7 @@ export class ManagedTable extends React.Component<
Object.keys(this.props.columns).map((key) => ({key, visible: true})); Object.keys(this.props.columns).map((key) => ({key, visible: true}));
this.state = { this.state = {
columnOrder, columnOrder,
columnKeys: this.computeColumnKeys(columnOrder), columnKeys: this.computeColumnKeys(columnOrder, this.props.columns),
columnSizes: columnSizes:
this.props.tableKey && globalTableState[this.props.tableKey] this.props.tableKey && globalTableState[this.props.tableKey]
? globalTableState[this.props.tableKey] ? globalTableState[this.props.tableKey]
@@ -254,7 +254,10 @@ export class ManagedTable extends React.Component<
} }
this.setState({ this.setState({
columnOrder: nextProps.columnOrder, columnOrder: nextProps.columnOrder,
columnKeys: this.computeColumnKeys(nextProps.columnOrder), columnKeys: this.computeColumnKeys(
nextProps.columnOrder,
this.props.columns,
),
}); });
} }
@@ -300,8 +303,12 @@ export class ManagedTable extends React.Component<
this.firstUpdate = false; this.firstUpdate = false;
} }
computeColumnKeys(columnOrder: TableColumnOrder) { computeColumnKeys(columnOrder: TableColumnOrder, columns: TableColumns) {
return columnOrder.map((k) => (k.visible ? k.key : null)).filter(notNull); return columnOrder
.map((k) =>
k.visible && Object.keys(columns).includes(k.key) ? k.key : null,
)
.filter(notNull);
} }
scrollToHighlightedRows = () => { scrollToHighlightedRows = () => {
@@ -676,7 +683,7 @@ export class ManagedTable extends React.Component<
for (let index = 0; index < columnOrder.length; index++) { for (let index = 0; index < columnOrder.length; index++) {
const col = columnOrder[index]; const col = columnOrder[index];
if (!col.visible) { if (!col.visible || !columns[col.key]) {
continue; continue;
} }

View File

@@ -277,6 +277,10 @@ export default class TableHead extends PureComponent<{
const key = column.key; const key = column.key;
const col = columns[key]; const col = columns[key];
if (!col) {
console.warn('no column for key: ', key);
continue;
}
let arrow; let arrow;
if (col.sortable === true && sortOrder && sortOrder.key === key) { if (col.sortable === true && sortOrder && sortOrder.key === key) {