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:
committed by
Facebook GitHub Bot
parent
a7b148fcc2
commit
ec6f732b09
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user