Реагирует, чтобы быть быстрым, но может стать очень медленным.
Почему?
Проблема № 1 - использование компонентов функций в любом месте.
Проблема с компонентом функции заключается в том, что он рендерит каждый раз при рендеринге родителя. Таким образом, если у вас есть некоторые тяжелые вычисления внутри функционального компонента (и у вас есть), вы будете бороться. Даже если DOM не будет обновлен после пересчета (из-за теневой проверки DOM), вам все равно нужно рассчитать все для сравнения.
Взгляните сюда:
const getRows = number => {
*heavy calculation*
}
И здесь:
<table border="1">
<thead>
<tr>{getHead()}</tr>
</thead>
<tbody>{getRows(1500)}</tbody>
</table>
В каждом рендере вы выполняете одни и те же вычисления, которые вам на самом деле не нужны.
Как исправить: - заменить функциональный компонент на чистый компонент. (Или используйте response.memo для функционального компонента)
Issue # 2 - выделение мусора (извините за такое сильное слово, но это правда)
onSelectionFinish={selected => {
console.time("EEEE");
console.log("Selection Started");
onSelect(selected);
}}
ignoreList={[".name-col", ".h-col", ".s-col", ".u-col", ".v-col"]}
Здесь, на каждом рендере Вы создаете новый массив и новый обработчик. Это увеличит использование памяти и работу сборщика мусора. Обычно это не проблема, но если ваш компонент часто рендерится, это станет проблемой. Или, если вы выделяете большое количество объектов, как вы делаете в getRows (). Стоит отметить, что сбор мусора полностью остановит ваше приложение.
Как исправить: - пересчитать все, что можно, и использовать результаты вместо расчетов на лету. Это сэкономит вам много процессорного времени.
Надеюсь, это поможет!
ОБНОВЛЕНИЕ Как уже упоминалось @YashJoshi,
техника оконного управления может очень помогите здесь
Чтобы получить больше информации, пожалуйста, отметьте здесь