Вы передаете значение реквизита для реквизита другого компонента. Один из способов исправить это - проверить, что ваша опора не имеет нулевого значения, прежде чем монтировать класс MyTable . Это в свою очередь может быть достигнуто с помощью условного рендеринга .
с использованием оператора &&
Вы можете поместить это прямо в рендер method.
this.props.summaryData &&
<MyTable size="small"
dataSource={this.props.summaryData.filter(record => record.DifferenceValue !== 0 &&
record.Value >= record.AdjustedValue) }
rowKey={(record) => (record.Id).toString()}
pagination={false}
locale={{ emptyText: 'No applicable summary data found' }}>
С переменной и, если условие
let conditionalMyTable = this.props.summaryData
? <MyTable ... />
: null;
Тогда, где бы вы ни рендерили <MyTable.../>
, подставьте его для переменной conditionalMyTable
.
В связи с тем, что в проекте Ant используются переменные для самого значения dataSource prop
Вариант 1, поместите запрос в
<MyTable size="small"
dataSource={this.props.summaryData
? this.props.summaryData.filter(record =>
record.DifferenceValue !== 0 &&
record.Value >= record.AdjustedValue)
: null
}
rowKey={(record) => (record.Id).toString()}
pagination={false}
locale={{ emptyText: 'No applicable summary data found' }}>
Вариант 2, используйте внешнюю переменную
let summaryData = this.props.summaryData || [];
<MyTable size="small"
dataSource={summaryData.filter(record => record.DifferenceValue !== 0 &&
record.Value >= record.AdjustedValue) }
rowKey={(record) => (record.Id).toString()}
pagination={false}
locale={{ emptyText: 'No applicable summary data found' }}>
Другой вариант
Возможно, здесь нет ошибки, это просто симптом,Возможно, вы никогда не захотите, чтобы this.props.summaryData был когда-либо нулевым или что-либо, кроме массива. Тогда я бы предложил перейти прямо к источнику, PropTypes . Это означало бы изменение класса, который отображает MyTable и имеет свойство prop summaryData
class IRenderMyTable extends React.Component {
....
}
IRenderMyTable.propTypes = {
summaryData: PropTypes.array.isRequired
};
IRenderMyTable. defaultProps = {
summaryData: []
};
С этим новым кодом тот, кто рендерит IRenderMyTable , либо не пропустит никаких реквизитов, в этом случае summaryData будет пустым списком, но никогда не будет пустым. Или они передадут что-то типа Array. В обоих сценариях вы избегаете исключения из попытки выполнения .filter () для значения null .
Удивительная выгода от этого? Вам не нужно беспокоиться о постоянных , если вопросах, когда вы собираетесь использовать опору.
Мне нравится использовать defaultProps и propTypes чтобы удостовериться, кто бы ни использовал их, делает это правильно