Tocar no DOM aciona um reflow e repinta mesmo que nada mude?
Estou trabalhando em um pequeno mecanismo de modelo JavaScript e tenho duas abordagens possíveis para lidar com atualizações no DOM quando o modelo é alterado:
Verifique se a atualização do DOM é realmente necessária antes de fazê-lo. Isso tem o benefício de não arriscar atualizações desnecessárias, mas estou desperdiçando espaço em manter o controle de valores antigos.
if (oldValue !== newValue) {
element.textContent = newValue;
}
Apenas faça. Isso é obviamente mais simples, mas tenho medo de desencadear retrocessos e refluxos sem motivo.
element.textContent = newValue;
Observe que também estou manipulando o DOM chamandosetAttribute
, addClass
eremoveClass
, mais configuraçãostyle[prop] = value
.
Portanto, minha pergunta é: os navegadores modernos são inteligentes o suficiente para perceber que nada realmente mudou e, portanto, não executam reflow ou repint, se você tocar no DOM sem alterar nada?