Desenvolvendo um Sistema de Votação Reutilizável em React

Tutorial completo sobre como criar um sistema de votação reutilizável utilizando React.

Construindo um Sistema de Votação Reutilizável com React

Criar um sistema de votação reutilizável em React pode ser uma tarefa muito satisfatória, especialmente se você deseja melhorar suas habilidades com componentes e estado. Neste tutorial, vamos abordar desde a configuração inicial até a implementação de funcionalidades avançadas.

Estrutura do Projeto

Antes de começarmos a codificar, é importante definir a estrutura do nosso projeto. Podemos organizá-lo da seguinte forma:

/votacao
├── /src
│   ├── /components
│   │   ├── Votacao.js
│   │   ├── Opcao.js
│   ├── App.js
│   └── index.js

Nesta estrutura, teremos um componente Votacao que gerenciará o estado e as opções de votação, e um componente Opcao que representará cada opção de voto. Vamos começar criando o arquivo Votacao.js.

Componente Votacao

No arquivo Votacao.js, vamos criar o componente principal que irá armazenar as opções de votação e o estado do voto.

import React, { useState } from 'react';
import Opcao from './Opcao';

const Votacao = () => {
    const [votos, setVotos] = useState({});
    const opcoes = ['Opção 1', 'Opção 2', 'Opção 3'];

    const votar = (opcao) => {
        setVotos(prevState => ({ ...prevState, [opcao]: (prevState[opcao] || 0) + 1 }));
    };

    return (
        <div>
            <h3>Vote na sua opção favorita:</h3>
            {opcoes.map((opcao) => (
                <Opcao key={opcao} nome={opcao} votar={votar} votos={votos[opcao] || 0} />
            ))}
        </div>
    );
};

export default Votacao;

Neste código, utilizamos o hook useState para armazenar os votos. A função votar atualiza o número de votos para a opção selecionada. Em seguida, usamos o método map para renderizar o componente Opcao para cada uma das opções de voto.

Componente Opcao

Agora, vamos criar o componente Opcao.js, que será responsável por exibir cada opção e permitir que o usuário vote.

import React from 'react';

const Opcao = ({ nome, votar, votos }) => {
    return (
        <div>
            <button onClick={() => votar(nome)}>{nome}</button>
            <span>{votos} votos</span>
        </div>
    );
};

export default Opcao;

No componente Opcao, temos um botão que chama a função votar ao ser clicado e exibe o número de votos recebidos. Essa estrutura simples é a base para nosso sistema de votação.

Melhorando a Experiência do Usuário

Para tornar o sistema mais interativo, podemos adicionar algumas melhorias. Por exemplo, podemos desabilitar o botão depois que o usuário votar. Para isso, precisamos armazenar o estado de se o usuário já votou:

const Votacao = () => {
    const [votos, setVotos] = useState({});
    const [usuarioVotou, setUsuarioVotou] = useState(false);
    const opcoes = ['Opção 1', 'Opção 2', 'Opção 3'];

    const votar = (opcao) => {
        if (!usuarioVotou) {
            setVotos(prevState => ({ ...prevState, [opcao]: (prevState[opcao] || 0) + 1 }));
            setUsuarioVotou(true);
        }
    };

    return (
        <div>
            <h3>Vote na sua opção favorita:</h3>
            {opcoes.map((opcao) => (
                <Opcao key={opcao} nome={opcao} votar={votar} votos={votos[opcao] || 0} desabilitado={usuarioVotou} />
            ))}
        </div>
    );
};

Agora, se o usuário já votou, ele não poderá votar novamente. Para desabilitar o botão, precisamos modificar o componente Opcao:

const Opcao = ({ nome, votar, votos, desabilitado }) => {
    return (
        <div>
            <button onClick={() => votar(nome)} disabled={desabilitado}>{nome}</button>
            <span>{votos} votos</span>
        </div>
    );
};

Conclusão

Ao final deste tutorial, você aprendeu a criar um sistema de votação reutilizável em React, utilizando componentes e gerenciando o estado de forma eficiente. Com os conceitos abordados, você pode expandir ainda mais este sistema, adicionando funcionalidades como a persistência de votos em um banco de dados ou a possibilidade de visualizar gráficos com os resultados.

A prática constante e a exploração de novas ideias são essenciais para se tornar um desenvolvedor mais habilidoso. Experimente modificar o código, adicionar novas funcionalidades e, acima de tudo, divirta-se criando com React!

Um sistema de votação reutilizável é uma ferramenta poderosa que pode ser aplicada em diversas situações, desde enquetes em sites até feedback de usuários. Aprender a criar um sistema como esse não só aprimora suas habilidades em React, mas também o capacita a construir aplicações mais interativas e dinâmicas. A reutilização de componentes é uma prática recomendada em desenvolvimento, pois promove a manutenção e escalabilidade do seu código. Ao dominar esses conceitos, você estará mais preparado para enfrentar desafios no desenvolvimento de aplicações reais e contribuir para projetos colaborativos.

Algumas aplicações:

  • Enquetes em sites de notícias
  • Feedback de produtos
  • Votações em eventos online
  • Escolhas de preferências em aplicativos

Dicas para quem está começando

  • Comece por entender como funcionam os estados no React.
  • Experimente modificar o código e adicionar novas funcionalidades.
  • Estude sobre a gestão de estado em aplicações maiores.
  • Leia a documentação oficial do React para se aprofundar.
  • Participe de comunidades e fóruns sobre React para trocar experiências.

Contribuições de Gabriel Nogueira

Compartilhe este tutorial: Como criar um sistema de votação reutilizável no React?

Compartilhe este tutorial

Continue aprendendo:

Como criar um hook para interagir com APIs de terceiros em componentes reutilizáveis?

Entenda como criar hooks em React para otimizar a comunicação com APIs externas.

Tutorial anterior

Como criar um componente de comparação de produtos reutilizável no React?

Guia completo sobre a criação de componentes reutilizáveis no React, focado em comparação de produtos.

Próximo tutorial