Opa, obrigado pelo comentário, Filipe!
Uma honta ter você aqui hahahaha.
Sim, estamos falando sobre a camada de apresentação em si, o que gera a nossa UI.
Se olharmos de forma separada, como você fez, podemos considerar a parte "lógica" como imperativa. Mas - na minha interpretação (que não significa nada hahahaha) - se olharmos o conjunto da obra em si (o React como um todo) podemos considerar que até mesmo o setIsLoading(true);
é declarativo, pois o simples fato de executarmos essa linha de código evita que tenhamos que fazer outras ações de maneira imperativa:
button.disabled = true;
button.textContent = 'Loading...';
No outro exemplo que você deu de fazer uma chamada fetch
, o React hoje possui um mecanismo próprio chamado createResource
para lidar com a assincronicidade da chamada e não travar o UI do usuário enquanto aguarda pela resposta.
Para nós, basta que utilizemos o fetch
, mas por trás dos panos o React abstrai lógicas que teríamos que fazer de maneira imperativa.
Novamente, é apenas a minha interpretação e a forma que eu vejo o React (o todo), mas a camada de apresentação definitivamente é declarativa.
Show! Então imagino que estamos bem alinhados e concordo 100% que a camada de apresentação é definitivamente declarativa (apesar de que lá também vejo que é possível colocar código imperativo) 🤝
[edit]
consertei o texto conforme sugestão do jgamaralv
Acredito tambem que React como um todo é de forma delcarativa. Esse repositorio explica a arquitetura fiber por traz do React:
https://github.com/acdlite/react-fiber-architecture
Aqui um outro otimo artigo sobre isso:
https://blog.logrocket.com/deep-dive-react-fiber/
Aqui um video bem deep sobre isso: https://youtu.be/ZCuYPiUIONs
video resumo: https://youtu.be/gsvHmZ3hXjo
Esse cara aqui deu uma palestra muito top em um meetup aqui em Berlin: Teoria: https://youtu.be/rKk4XJYzSQA Inspecionando: https://youtu.be/Zan16X8VvGM
Acrescentei referencias sobre react fiber architecture para ver como nosso codigo se torna mais declarativo pois por baixo do panos muitas coisas acontecem para a magica funcionar :)