Reflow происходит при изменении макета DOM.Переформатирование очень дорого в вычислительном отношении, так как размеры и позиции элементов страницы должны быть рассчитаны заново, тогда экран будет перекрашен .
Пример того, что вызовет перекомпоновку
for (let i = 1; i <= 100; i++ {
const newEle = document.createElement('p');
newEle.textContent = 'newly created paragraph element';
document.body.appendChild(newEle);
}
Приведенный выше код очень неэффективен, вызывая 100 процессов перекомпоновки для каждого добавляемого нового элемента абзаца.
Вы можете уменьшить этовычислительно напряженный процесс с использованием .createDocumentFragment()
const docFrag = document.createDocumentFragment();
for (let i = 1; i <= 100; i++ {
const newEle = document.createElement('p');
newEle.textContent = 'newly created paragraph element';
docFrag.appendChild(newEle);
}
document.body.appendChild(docFrag);
Приведенный выше код теперь вместо этого будет использовать только процесс перекомпоновки 1x для создания 100 новых элементов абзаца.
Repaint это всего лишь изменение пикселей на мониторе, хотя оно по-прежнему облагается налогом, это меньшее из двух зол, так как перекомпоновка включает в свою процедуру перекрашивание.