Цепочка ProductsPage -> ProductsTable -> TableBody -> ProductRow -> ActionsMenu — признак легаси. В современном React таблицу можно сконфигурировать через, например TanStack Table, а не через вложенные компоненты.
Накидал небольшой пример. Стейт модалок — локальный, рядом с триггером. Не нужно тащить информацию о модалках в Redux. В данном случае передача itemId в дочерний компонент — это не props drilling, а вполне корректная передача данных туда где они нужны. В 90% случаев в современном React локальный стейт лучше глобального, большую часть проблем закрывает кэш (например TanStack Query), а не стейт.
На тех объёмах, где таблица начнёт тормозить (и потребует виртуализации), пара лишних DOM-нод от Dialog — это погрешность. Реальная проблема — рендер самих строк, а не обёрток модалок.
П.С. В статье решается очень много проблем разом, проблема плохого UX, проблема композиции компонентов, проблема разделения ответственности. Каждая из них должна решаться индивидуально используя различные паттерны и подходы к композиции компонентов.
Цепочка
ProductsPage -> ProductsTable -> TableBody -> ProductRow -> ActionsMenu— признак легаси. В современном React таблицу можно сконфигурировать через, например TanStack Table, а не через вложенные компоненты.Накидал небольшой пример. Стейт модалок — локальный, рядом с триггером. Не нужно тащить информацию о модалках в Redux. В данном случае передача
itemIdв дочерний компонент — это не props drilling, а вполне корректная передача данных туда где они нужны. В 90% случаев в современном React локальный стейт лучше глобального, большую часть проблем закрывает кэш (например TanStack Query), а не стейт.На тех объёмах, где таблица начнёт тормозить (и потребует виртуализации), пара лишних DOM-нод от
Dialog— это погрешность. Реальная проблема — рендер самих строк, а не обёрток модалок.П.С. В статье решается очень много проблем разом, проблема плохого UX, проблема композиции компонентов, проблема разделения ответственности. Каждая из них должна решаться индивидуально используя различные паттерны и подходы к композиции компонентов.