logo
banner

Recoil - biblioteca de gerenciamento de estados no React

Irineu da Silva2 min
* editado em 01 abr 2021 , às 20:36

✅ O que é?

Recoil é uma biblioteca experimental de gerenciamento de estado para aplicações feitas em React. A biblioteca fornece vários recursos que são difíceis de implementar usando apenas o React — Está disponível desde maio de 2020.

No package.json da lib observamos que ela é feita com React, Immutable e TypeScript, inclusive a última versão já suporta TypeScript.

✅ Quem criou?

Os desenvolvedores do Facebook criaram essa lib, eles usam internamente nos seus projetos há algum tempo. Disponibilizaram o código no GitHub, porém ela está em fase de experimentação. Não é recomendável colocar no seu projeto em produção.

✅ Por que foi criada?

React por si só já tem gerenciamento de estados com o famoso hook useState e também Context API. Porém ambas tem suas limitações quando a aplicação ganha escala e precisamos compartilhar estados entre componentes de forma transversal.

Quais limitações?

  • No React passamos estados vias props e podemos ter um PropsHell mesmo usando hooks.
  • O contexto pode armazenar apenas um único valor - não um conjunto indefinido de valores, cada um com seus próprios consumidores. E com isso podemos ter um ContextAPIHell.

👍 Vantagens

Foi criada pelos engenheiros de softwares do Facebook, sabemos que seus produtos são altamente escaláveis e com isso seus códigos precisam ser também.

  • React é uma lib incrível o que nos dá confiança que Recoil possa ser incrível também.
  • Mais fácil de configurar do que outras libs de gerenciamento de estados
  • Cada estado é representado por um átomo e eles podem ficar em arquivos separados dos componentes e serem utilizados em outros componentes de maneira bem simples.
  • Recoil tem um bundle menor que outras libs que gerenciam estados como Redux e Mobx.
  • Se você sabe usar useState você sabe usar atom e outras funções do Recoil. Recoil is React-style — Bastante semelhante ao jeito React de fazer as coisas.

👎 Desvantagem

  • Por estar em fase de experimentação, infelizmente ainda não é recomendável colocar em produção.

✅ Onde aplicar?

Quando precisar de flexibilidade para compartilhar estado na aplicação. Utilizar dados derivados de algum estado com poder computacional das mudanças no estado que são refletidas nos componentes de maneira eficiente. E também se precisar fazer debugging e logging, ou seja observar as mudanças de estados de maneira eficiente.

Basicamente quando encontrar limitações com o gerenciamento de estado com React ou Redux, segundo Dave McCabeem sua apresentação sobre Recoil.

5 ferramentas em alta para desenvolvedores React

Post anterior

5 ferramentas em alta para desenvolvedores React

Proximo post