Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No desenvolvimento frontend, especialmente com React, uma dor comum é manipular inputs de arquivo, especialmente quando se trabalha com múltiplos arquivos.
React Hook Form facilita o gerenciamento de formulários, mas ao tentar usar setValue para inputs de arquivo com múltiplos arquivos, alguns desenvolvedores enfrentam erros, como "Failed to set the 'value' of input type='file'".
A questão é que, por padrão, o valor de inputs de arquivo é protegido por razões de segurança do navegador, o que impede a definição direta do valor via JavaScript. Portanto, ao tentar programaticamente definir arquivos selecionados, o método tradicional não funciona. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
A solução prática é manipular o estado do arquivo manualmente, usando um evento onChange customizado. Por exemplo, ao invés de usar setValue, você pode atualizar o estado do componente com os arquivos selecionados, e usar esse estado ao enviar o formulário. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Outra abordagem eficiente é usar refs para acessar diretamente o input de arquivo e alterar sua propriedade files, embora essa prática seja mais avançada e requeira cuidado para evitar conflitos com o gerenciamento de estado do React. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No caso do React Hook Form, o recomendado é evitar setValue para inputs de arquivo e, ao invés disso, manipular os arquivos via evento de mudança, garantindo que o estado esteja sincronizado com o DOM. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Para quem precisa de uma solução rápida, recomendo disparar o evento de mudança manualmente após a seleção, e manter o controle do arquivo no estado do componente, integrando tudo ao seu fluxo de validação. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Esse ponto reforça que, na prática, a manipulação de arquivos deve ser pensada com atenção ao ciclo de vida do componente e às limitações de segurança do navegador. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Verdade, Tiago. Aqui, a gente também faz assim, principalmente pra evitar confusão com o estado do React. Manter o controle do DOM direto às vezes é mais seguro nesses casos.
No meu time, o que ajudou foi montar um checklist de requisitos mínimos pra cada fase. Nesse caso, evitar setValue direto e usar a API de refs para manipular os arquivos funciona melhor, sem arriscar o erro de segurança.
Outra coisa que pesa é o impacto na performance se a gente tenta manipular muitos arquivos via setValue.