O que é verdade nos Estados e na Repintura

May 05 2023
Precisando procurar um emprego e vendo a demanda pelo desenvolvimento de aplicativos mobile usando React, resolvi me aprofundar nessa biblioteca. Estudando seus manuais oficiais encontrei o subtítulo “React Only Updates What's Necessary”.

Precisando procurar um emprego e vendo a demanda pelo desenvolvimento de aplicativos mobile usando React, resolvi me aprofundar nessa biblioteca. Estudando seus manuais oficiais encontrei o subtítulo “React Only Updates What's Necessary”. Explique “React DOM compara o elemento e seus filhos com o anterior e aplica apenas as atualizações de DOM necessárias para trazer o DOM para o estado desejado.”. Eles também nos dão um exemplo para que possa ser verificado.

Para verificar a assertiva simplesmente colocamos um “console.log()”.

Depois que a função é executada, vemos o console do navegador e o conteúdo de “console.log()” aparece repetidamente junto com a hora modificada.

Novo teste:

Duvidando desse resultado, decido fazer outro teste usando seus próprios componentes sem nenhuma TAG HTML, já que o React usa HTML modificado chamado JSX.

Resultado:

A modificação de um estado faz com que toda a função seja redesenhada. É o contrário do que indica o manual.

Desconfiança geral

Então duvide das ferramentas móveis que dizem para gerenciar estados e otimizar a repintura. E resolvi experimentar, com a mesma funcionalidade, SwiftUI para iPhone e JetPack Compose para Android.

SwiftUI:

Resultado:

Composição do JetPack:

Resultado:

O que está acontecendo?

A repintura móvel não é um detalhe requintado, consome recursos e bateria. Nesse aspecto, o React já é ineficiente. Mas por que qualquer indústria insiste? É claro que produtos de software melhores não estão interessados, mas economizam custos sem afetar seus lucros. Se uma vaca produzir mais dois litros de leite por dia, bem-vindo, independentemente do que esse excedente cause ao consumidor. Não é de admirar que o Facebook seja a mãe do cordeiro.

Agradecimentos especiais a Sanjay S