Contact Form usando react-hook-form e emailjs

O que eu queria fazer

Hoje, comecei a desenvolver meu portfólio, e uma coisa que eu realmente queria fazer era criar um formulário de contato através do qual as pessoas pudessem me contatar por e-mail. Como nunca tinha feito isso antes, me perguntei: "Como posso fazer isso?"

A Solução

Então, lembrei de uma biblioteca que eu estava ansioso para aprender, o react-hook-form. Pensei que era a oportunidade perfeita para aprendê-lo, porque ele oferece um controle incrível sobre os dados do formulário. No entanto, eu não tinha ideia de como enviar os dados para o meu e-mail. Depois de fazer uma breve pesquisa, encontrei várias possibilidades, mas uma que me chamou a atenção foi a biblioteca emailjs. Ela era fácil de usar e só exigia uma chave pública, um ID de modelo de e-mail e um ID de serviço do emailjs. Além disso, eu tive que fazer algumas configurações mínimas no VSCode. Neste artigo, eu vou fornecer um exemplo de como configurar o emailjs.

Descrição da imagem

-> Na imagem acima, você pode ver que eu chamo o método register do react-hook-form, que é responsável por acompanhar os dados do formulário. Na próxima imagem, você verá que eu chamo o mesmo método nos meus campos de entrada para atribuir um nome ao campo.

-> O método handleSubmit, também do react-hook-form, lida com o envio do formulário. Passamos nossa outra função, onSubmit, para este método para que ela possa ser executada. A função reset é usada para redefinir o estado do campo de entrada, configurando os valores de volta para strings vazias (" ").

Na função onSubmit, você precisa definir o modelo a ser enviado para o modelo de e-mail do emailjs mencionado anteriormente. As chaves from_name, from_email e message são importantes, como você verá em breve.

Chamamos o emailjs, passando o SERVICE_ID e TEMPLATE_ID que você selecionou no painel do emailjs. Crio duas variáveis para armazenar os valores para mim, e o terceiro parâmetro representa os parâmetros do modelo, que defino na função onSubmit.

Na imagem abaixo, você pode ver o método register para os campos de entrada mencionados anteriormente, assim como as validações do formulário. Isso é basicamente tudo o que você precisa fazer no seu código.

Descrição da imagem

A última coisa importante é garantir que os nomes das variáveis na sua função onSubmit correspondam às chaves do objeto dentro do modelo de e-mail no painel do emailjs, como mostrado abaixo:

Descrição da imagem

Como você pode ver, usei os mesmos nomes para as chaves do meu objeto. É assim que o emailjs reconhece os dados quando são enviados para a API do emailjs.

Isso é tudo por hoje, pessoal!