Я использую https://react-pivottable.js.org/ для варианта использования
Реализация такая, как показано ниже
У меня есть родительский компонент, который получает ответ от вызова API
экспорт класса по умолчанию PivotTableUISmartWrapper extends React.PureComponent { - это конструктор, который получает реквизиты от родителя
constructor (props) {
super(props);
this.state = {
pivotTableInput: props.gridInputData,
pivotState: props
};
}
/ ** * Метод жизненного цикла для обновления реквизита в компоненте * / , как только я получу ответ, я связываю pivotState и присваиваю значение, как показано ниже
static getDerivedStateFromProps (nextProps, state) {
console.log(nextProps);
return {
mode: 'demo',
pivotState: {
data: nextProps.gridInputData,
rows: ['SRN'],
cols: ['AcquisitionSystemType'],
aggregatorName: 'Integer Sum',
vals: connectivityHeader,
rendererName: 'Table',
plotlyOptions: { width: 1200, height: 500 },
plotlyConfig: {},
tableOptions: {
clickCallback: function (e, value, filters, pivotData) {
var names = [];
pivotData.forEachMatchingRecord(filters, function (
record
) {
names.push(record.SRN);
});
}
}
}
};
}
}
Render отобразит состояние, как показано ниже
render () {
return (
<Container className="app-pivot-table-container" fluid={true}>
<Row noGutters="true">
<Col xs={12} md={12}>
<h2 className="text-center">{this.state.filename}</h2>
</Col>
<Col xs={12} md={12} className="app-widget-content">
<div className="app-pivot-wrapper">
<PivotTableUI
renderers={Object.assign(
{},
TableRenderers,
createPlotlyRenderers(Plot)
)}
{...this.state.pivotState}
onChange={s => this.setState({ pivotState: s })}
unusedOrientationCutoff={Infinity}
/>
</div>
</Col>
</Row>
</Container>
);
}
, который прекрасно работает, когда мы загружаем компонент
, но каждый раз, когда перетаскивание или изменения вносятся в такие параметры, как показ линейного графика или перетаскивание строки или столбца, изменения не обновляются
Я упал, в состоянии получения производных всегда устанавливается опция по умолчанию
Скажите, пожалуйста, что я делаю неправильно, чтобы перетаскивание других столбцов работало