Не так давно начал работать с react, и у меня проблемы с производительностью.
Я использую response + redux + Reselect + immutable.js. У меня много данных (например, большая таблица с данными ~ 10 МБ).
Моя проблема: когда у меня ~ 10 000 строк, response создает 10 000 компонентов с: отдельными connect
, memoize selector
.
1 строка состоит из ~ 50 ключей (из разных хранилищ, например: высота столбца, индекс фокуса), массивов и т. Д. Например, ключ title
.
Когда я изменяю хранилище, например, изменяю title
в строке № 123, redux выполнит 10 000 memoize selectors
, сравнит результаты, и это займет ~ 1-2 секунды для 10k строк!
Как я могу предотвратить connect
вызовы, если я знаю, какой именно компонент нужно повторно визуализировать? Как сигнал "компонент с id: row-123
должен запустить memoize selector
и проверить изменения" или какие-то идеи?
Я планирую попробовать mobx, но на самом деле не уверен, что mobx предотвратит ненужное сравнение данных для каждого из 10k компонентов.
P.S. Я уже думал о разбивке на страницы, виртуальной прокрутке, но мне нужно вывести все данные одновременно в DOM