Как предотвратить разрушение расширенной строки React-Table при повторном рендеринге?

У меня есть простая react-table с расширенной подпрограммой. компонент, данные которого привязаны к объекту состояния Redux.

Когда подкомпонент расширяется, я запускаю вызов API, чтобы получить некоторые дополнительные данные для ленивой загрузки в хранилище избыточности. Хранилище избыточности обновляется новыми данными, и DOM подкомпонента также успешно обновляется, но проблема заключается в том, что расширенная строка не остается расширенной после повторного рендеринга. Он рушится.

Есть ли способ сохранить мои расширенные строки расширенными даже после обновления хранилища избыточности и запуска повторного рендеринга?


person LCIII    schedule 14.02.2020    source источник
comment
Состояние свернутого компонента также обрабатывается Redux? Что-то вроде: isChildExpanded: boolean   -  person r3dst0rm    schedule 14.02.2020
comment
@ r3dst0rm Нет. В хранилище избыточности есть только объект данных для моей таблицы и подкомпонентов. Но, кажется, я понимаю, к чему ты клонишь ☺   -  person LCIII    schedule 14.02.2020
comment
@LCIII - приведите пример проблемы, возможно, просто нужно сохранить расширенное состояние, но это может быть более сложно, например, случайное размонтирование. Для чего бы это ни стоило, я бы поместил расширенное состояние в редукцию (личное мнение), похоже, что это локальное состояние, если вам не нужно сохранять его при монтировании/размонтировании.   -  person Adam    schedule 14.02.2020
comment
Да, я здесь с @Adam. Поместите расширенное состояние в Redux (я бы тоже его туда поместил), чтобы содержать его в нескольких (повторных) рендерингах. [Некоторые дополнительные мысли, если вам не нравится идея Redux: возможно, также будет возможность написать собственный хук для достижения того же самого, но это звучит противно. Пользовательский контекст также может быть использован для решения этой проблемы.]   -  person r3dst0rm    schedule 14.02.2020
comment
Упс. На самом деле я хотел сказать, что НЕ помещал бы расширенное состояние в редукцию, если только вам это не нужно.   -  person Adam    schedule 14.02.2020
comment
Да, вы не должны хранить простые флаги для пользовательского интерфейса в редуксе, для этой проблемы вам, вероятно, следует оставить его в родительском состоянии таблицы.   -  person h-des    schedule 14.02.2020


Ответы (2)


Установите для autoResetExpanded значение false в конфигурации, подробнее — https://react-table.tanstack.com/docs/api/useExpanded

person Rohit Garg    schedule 25.01.2021

Для меня установка collapseOnDataChange на false сработала

person saurabh gupta    schedule 18.04.2021