Personalize as preferências de consentimento
Utilizamos cookies para ajudá-lo a navegar com eficiência e executar determinadas funções. Você encontrará informações detalhadas sobre todos os cookies em cada categoria de consentimento abaixo.

Os cookies categorizados como “Necessários” são armazenados no seu navegador, pois são essenciais para ativar as funcionalidades básicas do site.

Também utilizamos cookies de terceiros que nos ajudam a analisar como você usa este site, armazenam suas preferências e fornecem conteúdo e anúncios que são relevantes para você. Estes cookies só serão armazenados no seu navegador com o seu consentimento prévio.

Você pode optar por ativar ou desativar alguns ou todos esses cookies, mas a desativação de alguns deles pode afetar sua experiência de navegação.
Sempre ativo

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Não há cookies para exibir.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Não há cookies para exibir.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Não há cookies para exibir.

Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Não há cookies para exibir.

Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.

Não há cookies para exibir.

Back-end

Validação de formulário com React Hook Form e Yup

13 de abril de 2022

[vc_row][vc_column][vc_column_text]É inegável o avanço exponencial das tecnologias, sobretudo nas aplicações web e mobile, que fazem parte do dia a dia de grande parte da humanidade, seja para entretenimento, estudo, trabalho ou outras finalidades. Consequentemente, o fluxo de dados tem acompanhado esse crescimento e varia em diferentes formatos, o que pode acabar confundindo os usuários, além de dificultar o trabalho para os desenvolvedores. Nesse contexto, realizar a validação de formulário pode trazer inúmeros benefícios de usabilidade para tornar mais agradável a experiência do usuário, mostrando feedbacks positivos ou negativos e orientações a respeito dos valores inseridos, por exemplo.

[adrotate banner=”4″]

Pensando nisso, neste artigo, vamos aprender como fazer a validação de formulário com React Hook Form e Yup.

Aplicações React

Trabalhando com aplicações React, podemos encontrar inúmeras soluções para validação de formulários. Bem como, React Hook Form e Yup, que são soluções bastante performáticas e de simples integração para os desenvolvedores.

React Hook Form

React Hook Form é uma biblioteca usada para validação de formulário em aplicações React, sem nenhuma outra dependência. Assim, além de ser eficiente e fácil de usar, ela permite que os desenvolvedores escrevam poucas linhas em sua implementação comparada a outras bibliotecas com a mesma finalidade.

Nesse sentido, criando validação de formulário simples, o React Hook Form, alinhado com os existentes dentro do próprio HTML, suporta as validações: required, min, max, maxlength, minlength, pattern, validate.

Yup

Yup é um construtor de esquema JavaScript para análise e validação de valor. Assim, com seu esquema de validação poderoso e simples de usar, o Yup possibilita uma maneira abstrata que não interfere no restante da lógica de negócio.

Dessa forma, é possível criar um objeto formatado que assemelha-se com o esquema pretendido para um objeto. E em seguida, utilizar as funções deste utilitário para verificar se nossos objetos de dados correspondem a esse esquema. Para, assim, validá-los.

Afinal, vale ressaltar que podemos trabalhar em validações de qualquer objeto na aplicação. Tal qual podem ser utilizados dados de formulários no Front-end ou até no Back-end, dentre outras utilidades.

Passo a passo NA PRÁTICA

React Hook Form e Yup trabalham muito bem juntas. Pensando nisso, criamos um passo a passo para fazer essa integração.

1. Adicionar dependências

Primeiramente, é necessário adicionar as seguintes dependências em um projeto React:

Figura 1. Instalando dependências usando npm
Figura 1. Instalando dependências usando npm

2. Suposição do código

Em seguida, suponhamos que esse é o nosso trecho de código:

Figura 2. Trecho de código para o formulário
Figura 2. Trecho de código para o formulário

3. Adicionar importação

Então, adicionamos a importação dos pacotes no topo do arquivo:

Figura 3. Importando os pacotes do react use form e yup
Figura 3. Importando os pacotes do react use form e yup

4. Instanciar schema

Neste momento, instanciamos o schema de validação usando yup:

Figura 4. Instanciando o schema de validação usando yup
Figura 4. Instanciando o schema de validação usando yup

5. Declarar objeto

Agora, devemos declarar um objeto que recebe os seguintes atributos:

  • register: método que permite registrar um elemento e aplicar nele as regras de validação;
  • handleSubmit: função que irá receber os dados do formulário se a validação for bem sucedida;
  • reset: função que irá limpar todos os campos do formulário ou reiniciá-los para seus valores padrão. E, nesse caso, formState, que irá retornar os erros de uma forma simples;
  • yupResolver: função que irá gerar as validações com base no schema criado na passo anterior.
Figura 5. Desconstruindo o retorno de useForm
Figura 5. Desconstruindo o retorno de useForm

6. Adicionar tipagem

Nesse projeto, estamos usando typescript. Por isso, precisamos adicionar a tipagem no useForm. Então, será possível facilmente identificar os atributos dentro o objeto data, retornado pela função handleSubmit. Bem como tipar o nome do input que será registrado usando register.

A interface:

Figura 6. Criando a interface
Figura 6. Criando a interface

Adicionando a tipagem no método useForm:

Figura 7. Adicionando tipagem no useForm
Figura 7. Adicionando tipagem no useForm

7. Adicionar handleSubmit

Neste momento, iremos adicionar os métodos handleSubmit no formulário e register nos inputs:

Figura 8. Adicionando as funções do React Hook Form no formulário e inputs
Figura 8. Adicionando as funções do React Hook Form no formulário e inputs

Observação: o método onSubmitHandler, que está sendo passado como parâmetro para função handleSubmit do React Hook Form e marcado como erro, ainda não foi criado, faremos isso no passo seguinte.

A intelliSense em funcionamento no método register após a adição da tipagem:

Figura 9. Demonstrando o funcionamento da intelliSense no método register
Figura 9. Demonstrando o funcionamento da intelliSense no método register

8. Criar onSubmitHandler

Então, iremos criar o método onSubmitHandler para receber e usar os dados do formulário:

Figura 10. Criando o método onSubmitHandler
Figura 10. Criando o método onSubmitHandler

A intelliSense em funcionamento no objeto com os dados do formulário:

Figura 11. Demonstrando o funcionamento da intelliSense no objeto data
Figura 11. Demonstrando o funcionamento da intelliSense no objeto data

9. Adicionar mensagens de erro

Por último, adicionamos as mensagens de erro para cada input:

Figura 12. Adicionando mensagem de erro para os inputs
Figura 12. Adicionando mensagem de erro para os inputs

10. Finalização

Dessa forma, com tudo pronto, o código fica assim:

Figura 12. Código final
Figura 12. Código final

Assim, ao rodar o aplicativo, ele deve funcionar assim:

Veja também:

Como utilizar animações Lottie com React

Conclusão

A validação de formulário facilita a aplicação de diversas funcionalidades do sistema. Bem como melhora a usabilidade e experiência do usuário. Então, neste artigo, aprendemos como fazemos a validação de formulário com React Hook Form e Yup. 

Pensando nisso, acesse o nosso blog e confira diversas dicas sobre o mundo do desenvolvimento.

Lembrando que as referências utilizadas para a aplicação neste artigo foram: https://react-hook-form.com/ e https://github.com/jquense/yup.

[adrotate banner=”5″][/vc_column_text][/vc_column][/vc_row]

Imagem padrão

Autor

Julia Ilkiu

Artigos relacionados

Receba nossa
newsletter

Assine nossa newsletter e receba as últimas
novidades sobre o mundo da tecnologia.

    Eu autorizo a Luby a usar meus dados para o envio de conteúdos personalizados.