Uma Action é uma função async que você entrega ao React, normalmente pela prop action de um form ou pelo startTransition. O React gerencia o estado de pendente, os erros e a ordenação em vez de você ligar flags booleanas na mão. O useActionState recebe uma action e um estado inicial e devolve o estado atual, uma action embrulhada para passar ao form, e uma flag isPending. O useFormStatus lê o estado de pendente a partir de um componente aninhado, e o useOptimistic renderiza o resultado esperado na hora.
Por que os entrevistadores perguntam isso
Isso diz ao entrevistador se você se manteve atualizado, já que as Actions substituem uma pilha de boilerplate que a maioria das bases de código React ainda carrega. Ele quer ver que você entende que o tratamento de pendente e de erro vem da maquinaria de transições, e que você consegue explicar updates otimistas e como eles são revertidos. Também é um bom indicador de se você entregou mutações no servidor recentemente.
Como estruturar sua resposta
- Defina uma Action como uma função async cujo ciclo de vida o React gerencia.
- Explique o que o useActionState devolve e para onde vai cada peça.
- Acrescente useFormStatus e useOptimistic e o que eles resolvem.
- Contraste com o estado manual de loading e erro que você escrevia antes.
Exemplo de resposta
Antes das Actions, toda mutação significava as mesmas quatro peças de estado: loading, erro, o resultado, e alguma coisa para impedir envio duplicado. As Actions dobram tudo isso dentro do React. Eu escrevo uma função async que faz o trabalho, entrego ela ao useActionState com um estado inicial, e recebo de volta o estado atual, uma action para colocar na prop action do form, e o isPending. O React roda ela dentro de uma transição, então a flag de pendente e a ordenação vêm de graça, e se dois envios correrem juntos, vence o resultado do mais recente e não o da chamada de rede que voltar por último. Para um botão de submit lá no fundo do formulário eu uso o useFormStatus, assim ele lê o pendente sem prop drilling. E para algo como uma caixa de comentários eu adiciono o useOptimistic para mostrar o comentário na hora, e se a action lançar erro, o React reverte o estado otimista para o estado real sozinho. A vitória prática é que um componente de formulário cai de umas setenta linhas para vinte e os casos de borda deixam de ser problema meu para lembrar.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que acontece com o estado otimista se a action falhar?
- Como você leva um erro de validação de volta para o formulário a partir de uma action?
- Como as Actions se comportam antes da hidratação terminar?
Mais perguntas para Desenvolvedor React
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas