Estado e interface / Estado
De quem e esse estado?
De Quem e Esse Estado?
Um jeito simples de decidir o que deve ser estado, o que pode ser derivado e o que nem deveria existir.
O problema
Muita interface fica confusa porque o time comeca a guardar estado antes de decidir se aquele valor realmente precisa existir como estado.
Daqui a pouco o mesmo dado aparece em dois lugares, uma tela depende da outra para continuar coerente e o bug parece “aleatorio”.
Na maioria das vezes, o problema nao e React. O problema e ownership mal resolvido.
Modelo mental
Estado bom e estado com dono claro.
Se um valor pode ser calculado a partir de outra coisa, talvez ele nao precise ser salvo de novo.
Se duas partes diferentes da interface dependem do mesmo valor, alguem precisa ser a fonte de verdade.
Quebrando o problema
Quando voce olhar para um valor na UI, tente responder:
- isso precisa mudar com interacao do usuario?
- isso pode ser calculado a partir de props ou de outro estado?
- quem deveria ser a fonte de verdade?
- este valor precisa ser compartilhado ou pode ficar local?
Essas perguntas evitam muito estado inventado sem necessidade.
Exemplo simples
Imagine uma lista de usuarios e um campo de busca.
Uma abordagem ruim seria guardar:
userssearchfilteredUsers
O problema e que filteredUsers pode ser derivado de users e search.
Uma abordagem melhor seria guardar so:
userssearch
E calcular filteredUsers durante a renderizacao.
Assim voce reduz sincronizacao desnecessaria e diminui a chance de dado ficar velho.
Erros comuns
- guardar estado que poderia ser derivado
- criar duas fontes de verdade para o mesmo valor
- subir estado cedo demais sem necessidade real
- espalhar estado compartilhado sem definir ownership
Como um senior pensa
Um senior forte nao pergunta primeiro “onde eu coloco esse state?”.
Ele pergunta:
Esse valor realmente precisa existir como estado ou eu consigo derivar isso de outro lugar?
Essa pergunta costuma simplificar a tela antes mesmo de qualquer refactor.
O que o entrevistador quer ver
Em entrevista, isso costuma revelar bastante maturidade:
- voce sabe diferenciar estado real de valor derivado
- voce entende fonte de verdade
- voce sabe justificar por que algo deve ser local ou compartilhado
Quem faz isso bem passa a impressao de que constrói interface com menos bug e menos atrito.
Estado demais parece flexibilidade no comeco e manutencao ruim logo depois.
Se voce nao sabe quem e o dono do valor, provavelmente o estado ainda nao esta bem modelado.