Gerenciamento de estado — Mobx

Igor L Sambo💙🇲🇿
GDG Maputo
Published in
4 min readMay 26, 2020

Depois de tantas opções de gerenciamento de estado, porquê conhecer outro? Será que os anteriores não são bons? Será que o Mobx é melhor? Estas e mais perguntas podem estar surgindo em seu cérebro, mas como desenvolvedores (e não só) sabemos que em termos de soluções para um problema/situação depende muito do contexto a que o mesmo se encontra, posto isto, é importante notar a importância de cada uma das opções previamente definidas.

Este artigo faz parte de uma série de 5 artigos que vão abordar vários padrões de gerenciamento de estado.

  1. State Management — Introdução
  2. State Management — Provider
  3. State Management — Bloc
  4. State Management — Redux
  5. State Management — Mobx (este artigo)

Mobx

O Mobx é uma biblioteca de gerenciamento de estado tida como “técnica de gerenciamento de estado sólida” por seu desempenho ‘extraordinário’ em projectos de larga escala.

O MobX é apenas uma biblioteca de gerenciamento de estado que simplifica a conexão dos dados reativos do seu aplicativo com a interface do usuário.

O Mobx permite aos desenvolvedores preocuparem-se menos com o link entre a interface do utilizador (UI) e a lógica da aplicação através de um recurso para gerar uma classe que faz essa ligação, deixando assim ao desenvolvedor o trabalho de melhorar sua lógica de negócio e UI.

Para que este conceito seja prático o Mobx é constituído de conceitos como Observables, Actions, Computed Observables e Observer Widgets.

  • Observables ou ‘geradores de eventos’ são variáveis responsáveis por armazenar o estado reactivo de nossa aplicação. Os observables podem ser de vários tipos, temos os genéricos, temos os de suporte a objectos como Lists, Set ou Maps, ObservableFuture e o ObservableStream.
  • Actions ou mutadores são funções que definem como deve ser actualizado o estado da aplicação.
  • Computed Observables são variáveis dependentes dos observables e são ‘acionadas’ quando os observables mudam seu estado.
  • Observer Widgets são widgets especiais que comportam-se como listeners de modo a fazer sentir a mudança do lado da UI de acordo com o estado do observable respectivo.

Para perceber melhor estes conceitos recorramos ao exemplo padrão desta série: Imaginemos o cenário onde temos o guarda (observables) que estão preparados a receber qualquer movimento e preparar uma reacção de acordo com o acontecido, temos nossa secretária que aguarda ansiosamente para que seja notificada de qualquer alteração de modo a proceder com uma acção (action), imaginemos uma situação onde temos mais uma camada de secretários dos executivos no último andar com o objectivo de ajudar na agenda apenas dos executivos, porém, dependem da recepção para realizar algumas actividades como receber seus convidados para reuniões do executivo (computed observable) e por fim os departamentos recebem a notícia de recepção de visitas e organizam-se de acordo (observable widgets).

https://github.com/mobxjs/mobx.dart/raw/master/docs/src/images/mobx-triad.png

O mobx é realmente simples, contudo tem mais conceitos que não foram abordados aqui e que estão disponíveis na documentação deste pacote.

Como implementar o Mobx

Para poder usar o Mobx, incluindo o processo de auto-geração de código, é necessário seguir duas abordagens, uma que é colocar as dependências do projecto e outra que são as dependências de dev, que são executadas em runtime.

Na Prática

Para aceder às mudanças no mobx não se recorre a nenhum widget especial, se não os conceitos de Store que ele mesmo aplica pelo nosso ficheiro CalcConrtrollerBase para o auto-gerado.

Este exemplo representa uma calculadora (mais “somadora” rsrsrsr) que escuta a mudanças constantes dos textFields, sem necessidade de um cotroller convencional e uma lógica embutida directo na UI. A entrega destes dados na UI é completamente abstracta!

Nota: Pode contribuir o projecto completo no meu repositório do github.

Espero que tenha aprendido com este artigo e que se tenha divertido enquanto lia.

Obrigado por acompanhar até ao fim e espero por você nos próximos artigos.

Para questões e sugestões esteja a vontade para tal nos comentários, email igorlsambo1999@gmail.com ou twitter @lsambo02.

Obrigado e até ao próximo artigo!!!

--

--