Повторний потік відбувається, коли змінюється макет 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 нових елементів абзацу.
Перефарбовування - це лише зміна пікселів на моніторі, хоча це все одно оподатковує це менше з двох зол, оскільки перепланування включає перефарбовування у свою процедуру.