Publicado em: 17/03/2025

Au 12 - Front-end - React - Criando estrutura e componentes de um formulário - Mestres BEGIN


Nesta aula, iniciamos o desenvolvimento de um formulário completo para adicionar novos produtos, seguindo o design proposto e criando componentes reutilizáveis.

Estrutura do Formulário

O formulário será composto por:

  • Um título "Adicionar novo produto"
  • Botão de fechar (a ser implementado)
  • Vários campos de entrada:
    • Select para categoria
    • Select para marca
    • Select para loja
    • Input para nome do produto
    • Input para preço
    • Textarea para descrição
    • Input para quantidade em estoque

Organização do Código

Criamos uma estrutura modular para os componentes:

1components/
2  AddProductForm/
3    index.tsx
4    styles.module.css
5  InputSelect/
6    index.tsx
7  InputText/
8    index.tsx
9  InputTextArea/
10    index.tsx

Os componentes de input foram criados na pasta global de components para permitir reutilização em outros formulários.

Componente InputSelect

Desenvolvemos um select reutilizável com as seguintes propriedades:

1interface InputSelectProps {
2 name: string;
3 label: string;
4 options: string[];
5 } 
6 export function InputSelect({ name, label, options }: InputSelectProps) {
7 return (
8 <div className={styles.container}>
9 <label>{label}</label>
10 <select name={name}> {options.map((option) => ( <option key={option} value={option}> {option} </option> ))} </select> </div> ); }

Próximos Passos

Na próxima aula, vamos:

  • Finalizar os componentes InputText e InputTextArea
  • Implementar o botão de fechar com ícone SVG
  • Adicionar estilos para todos os componentes
  • Garantir a responsividade do formulário
  • Preparar a integração com a lógica do formulário

Considerações Finais

Alguns pontos importantes sobre esta implementação:

  • Reutilização: Os componentes foram pensados para serem usados em diferentes partes da aplicação
  • Organização: A estrutura de pastas reflete a hierarquia de componentes
  • Tipagem: Usamos TypeScript para garantir a qualidade do código
  • Separação de conceitos: A estilização será aplicada separadamente na próxima aula

Esta abordagem modular traz benefícios como:

  • Facilidade de manutenção
  • Consistência visual
  • Redução de código duplicado
  • Melhor organização do projeto

Para projetos mais complexos, poderíamos ainda:

  • Adicionar validação de formulário
  • Implementar máscaras para campos específicos
  • Criar um sistema de temas para os inputs
  • Adicionar suporte a internacionalização
Fernando Cunha
Artigo deFernando Cunha

Com mais de 15 anos de experiência em tecnologia e formado pela FAAP em Administração de empresas, hoje é o CEO da Mestres da Web, empresa referência no mercado nacional e com projeções de expansão internacional.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN
play

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN

Explorando a estrutura gerada pelo Create React App, entendendo o papel das pastas public e src, os conceitos de Virtual DOM, JSX e componentes, além de como o CSS é aplicado nos projetos React.

Autor deste artigo
Fernando Cunha17/03/2025
Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN
play

Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN

Explorando a criação de um layout fixo para a aplicação React, com barra lateral, barra superior e área dinâmica para conteúdo. Utilizando o React Router Dom v6 para gerenciar navegação entre rotas.

Autor deste artigo
Fernando Cunha17/03/2025
Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN
play

Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN

Abordando técnicas para organizar estilos em React, utilizando seletores CSS, CSS Modules, integração com React Router, reset CSS eficiente e boas práticas para garantir consistência visual e manutenibilidade.

Autor deste artigo
Fernando Cunha17/03/2025