Источник:
smarty-code/smarty-crm/docs/refactoring/2026-06-16-lan49-react-window.md
Дата: 2026-06-16
Статус: Выполнено
Ветка: phase-5/react-18
Заменены импорты react-virtualized/dist/es/AutoSizer и react-virtualized/dist/commonjs/AutoSizer на react-virtualized-auto-sizer:
CellMeasureMasonry/CellMeasureMasonry.js — AutoSizer importObjectHistory/ObjectHistoryList/ObjectHistoryList.js — AutoSizer importSendReportToChat/SendReportToChatDialogs/SendReportToChatDialogs.js — AutoSizer importWidgetScrollToTop/WidgetScrollToTop.js — AutoSizer importfs/Breadcrumbs/EtcMenu/EtcMenu.js — только List (AutoSizer не использовался)fs/FsContentBlock/ObjectsBlock/ObjectsBlock.js — AutoSizer importfs/FsContentBlock/ObjectsList/ObjectsList.js — AutoSizer importitemSize={40}, убран overscanIndicesGetter → overscanCount={10}, rowRenderer → childrenitemSize={itemHeight || 61}, scrollToRow → scrollToItem, onRowsRendered → onItemsRendered, scrollToIndex → initialScrollOffset, убран recomputeRowHeightsitemSize={ETC_CRUMB_MENU_ITEM_HEIGHT}, onScrollbarPresenceChange → вычисление из данных, убран constructor/stateitemSize={ITEM_HEIGHT_BLOCK + MARGIN_BLOCK}, scrollToPosition → scrollTo, onScrollbarPresenceChange → вычисление из данных, overscanIndicesGetter → overscanCount={10}CellMeasurer/CellMeasurerCache на VariableSizeList с getItemSize (default 48px), cache.clearAll() → resetAfterIndex(0), убран CellMeasurer wrapperCollection (AutoSizer заменён)ScrollSync + GridТак как 2 файла остаются на react-virtualized (Collection, ScrollSync) + 20 других файлов вне scope задачи.
| Файл | Изменения |
|---|---|
CellMeasureMasonry/CellMeasureMasonry.js |
AutoSizer import → react-virtualized-auto-sizer |
ObjectHistory/ObjectHistoryList/ObjectHistoryList.js |
List → VariableSizeList, CellMeasurer → getItemSize, AutoSizer import |
SendReportToChat/SendReportToChatDialogs/SendReportToChatDialogs.js |
List → FixedSizeList, AutoSizer import, убран overscanIndicesGetter |
WidgetScrollToTop/WidgetScrollToTop.js |
List → FixedSizeList, scrollToRow → scrollToItem, onRowsRendered → onItemsRendered, AutoSizer import |
fs/Breadcrumbs/EtcMenu/EtcMenu.js |
List → FixedSizeList, onScrollbarPresenceChange → вычисление из данных |
fs/FsContentBlock/ObjectsBlock/ObjectsBlock.js |
List → FixedSizeList, scrollToPosition → scrollTo, AutoSizer import |
fs/FsContentBlock/ObjectsList/ObjectsList.js |
List → FixedSizeList, scrollToPosition → scrollTo, AutoSizer import |
react-virtualized/dist (modals, sidebar, goals, etc.)