Desde o início, o React JS tem sido um grande sucesso entre os desenvolvedores web. O grande motivo é a simplicidade que ele oferece para criar interfaces ricas e interativas. Outro fator que também pesa a seu favor é a velocidade de execução do código.

Apesar de todas essas vantagens, o React JS ainda apresenta alguns problemas. Um dos principais é a dificuldade de escalabilidade do código. Quando o projeto fica muito grande, fica cada vez mais difícil manter o código organizado e consistente.

Para abordar grande parte desses problemas, é crucial adotar um padrão de código consistente e uma arquitetura bem definida. Neste post, exploraremos a arquitetura MVVM ao utilizar o React JS.

Mas antes de entrarmos no assunto, vamos rever rapidamente os conceitos básicos do React JS.

 

O que é a Arquitetura MVVM?

MVVM é um padrão de arquitetura de software que fornece uma maneira de separar o desenvolvimento da interface gráfica do usuário (GUI) do desenvolvimento da lógica de negócios ou lógica de back-end (o modelo de dados).

O padrão Model-View-ViewModel (MVVM) é uma variante aproximada do conhecido padrão Model-View-Controller (MVC). A única diferença é que no MVVM, o componente ViewModel cuida da comunicação com o modelo back-end, enquanto no MVC essa comunicação é feita pelo Controller.

Uma das principais vantagens do uso do MVVM é que ele permite uma separação clara de preocupações entre a interface do usuário (UI) e a lógica de negócios. Essa separação facilita o desenvolvimento e o teste da UI e da lógica de negócios de forma independente.

Outra vantagem do MVVM é que ele facilita a vinculação da UI ao modelo de dados. Isso ocorre porque o ViewModel expõe propriedades e comandos que podem ser vinculados a elementos na View.

Além disso, o MVVM suporta o princípio de acoplamento fraco, que é importante para código extensível e sustentável.

Aqui estão breves descrições dos principais componentes da arquitetura MVVM:

Model (Modelo):

View (Visão):

ViewModel:

Na arquitetura MVVM, a ligação de dados desempenha um papel fundamental, permitindo alterações automáticas entre Model e View sem manipulação manual da interface do usuário. Isso facilita a manutenção, teste e escalabilidade do código.

Como posso aplicar MVVM no meu projeto ReactJS/Native?

Para começar a implementar esse modelo de arquitetura no seu projeto React, vamos precisar separar as responsabilidades. Vamos tomar como exemplo uma tela de login padrão com e-mail e senha.

Normalmente, você terá uma tela de login como no código abaixo.

Para seguir com a implementação, vamos precisar separar esse código em 3 partes.

Vamos isolar toda a parte que trata o login em um arquivo separado, vamos chamar esse arquivo de ‘useLoginModel.tsx’. Esse arquivo vai ter o formato de um hook e vai exportar todas as funções que tratam o login. como no código abaixo…

Agora, vamos isolar o código a vídeo em um arquivo ‘loginView.tsx’.

Um detalhe muito importante é receber via props as funções que validam e submetem o login. Será dessa forma que a model vai interagir com a view.

 

 

Por ultimo devemos criar nossa viewModel, essa camada vai fazer a união da view com a model e repassando toda a lógica de login para dentro da view. Para isso, basta criar um arquivo chamado “liginViewModel.tsx”. Esse arquivo deve chamar o useLoginModel e repassar todas as funções para loginView como no exemplo abaixo.

Qual o Ganho em Manter Meu Código com MVVM?

Manter seu código com a arquitetura MVVM oferece diversos benefícios:

  1. Separação de Preocupações:
    • Clareza na separação entre Modelo, Visão e ViewModel.
  2. Reutilização de Código:
    • Possibilidade de reutilizar lógica de apresentação em diferentes partes da aplicação.
  3. Manutenção Facilitada:
    • Menos probabilidade de efeitos colaterais, facilitando a manutenção.
  4. Testabilidade Aprimorada:
    • Facilidade de escrever testes unitários para o ViewModel.
  5. Ligação de Dados Bidirecional:
    • Atualização automática da interface do usuário quando os dados do Modelo mudam.
  6. Escalabilidade:
    • Base sólida para adicionar novas funcionalidades e expandir a aplicação.
  7. Facilidade de Colaboração:
    • Estrutura clara facilita a colaboração entre membros da equipe.
  8. Adaptabilidade a Frameworks e Plataformas:
    • Utilização com diversos frameworks e plataformas, como React, Angular, WPF, Xamarin, entre outros.

Conclusão

Ao adotar a arquitetura MVVM, os desenvolvedores podem criar aplicativos mais organizados, modularizados e fáceis de dar manutenção. Essa abordagem também favorece a reutilização de código e proporciona uma base sólida para a escalabilidade da aplicação.