При обновлении дерева, использующего нижние колонтитулы в React, ни один из столбцов нижнего колонтитула не обновляется один раз. Чтобы отобразить нижний колонтитул один раз, я могу либо развернуть дерево, либо развернуть строку, чтобы создать строку нижнего колонтитула. После рендеринга значения никогда не меняются даже при свертывании и повторном расширении строки.
Я не уверен, почему это поведение отличается в режимах сетки. После многих ночей сонливости моя текущая рабочая теория состоит в том, что выведенная строка нижнего колонтитула не обновляется или не корректно связана с исходной строкой.
Существует несколько обнаруженных обходных путей / подсказок:
1) deltaRowDataMode = false будет работать как положено. Поскольку мы работаем с реагирующими и неизменяемыми хранилищами, я считаю, что этот режим по-прежнему нужен.
2) Изменение поля идентификатора при обновлении также работает, как и ожидалось. Однако создать полный составной ключ для нашей таблицы, чтобы обнаружить любое изменение, было бы очень сложно, поскольку в худшем случае мы можем иметь до 50 столбцов. Размер ключа также будет огромным.
// пример полного plnkr: https://embed.plnkr.co/Ty1AdL2oQzk9MUqnTHQs/
<AgGridReact
columnDefs={this.state.columnDefs}
rowData={this.state.rowData}
treeData={true}
animateRows={true}
groupDefaultExpanded={this.state.groupDefaultExpanded}
getDataPath={this.state.getDataPath}
autoGroupColumnDef={this.state.autoGroupColumnDef}
onGridReady={this.onGridReady}
groupIncludeFooter={true}
groupIncludeTotalFooter={true}
deltaRowDataMode={true}
getRowNodeId={data => data.id}
groupSuppressAutoColumn={true}
/>
Я ожидаю, что значения нижнего колонтитула изменятся при изменении общей строки, включая имя. Использование первого обходного пути (deltaRowDataMode = false) покажет желаемое поведение.
Любое понимание причины проблемы повторного рендеринга будет оценено, или исправление того, что я могу делать неправильно.