Desenvolvimento de um Relógio Digital em React ⏰🚀

Olá! Hoje eu gostaria de compartilhar com vocês um pequeno projeto que desenvolvi que deu o começo para meus estudos em React. Explicarei como eu desenvolvi e fiquem à vontade para darem sugestões a este projeto.

Imagem do relógio

Configuração do Projeto 🏗️

Antes de iniciar este projeto, eu já tinha instalado o Node.js, mas quem quiser é só acessar o site deles.

Para baixar o React, utilizei o seguinte comando:

npx create-react-app clock

Para iniciar o projeto no navegador, fiz o uso deste comando:

npm start

Este comando iniciará o servidor de desenvolvimento e abrirá automaticamente uma nova janela do navegador com o meu React.

Após isso, com o React devidamente baixado, os arquivos principais estão no diretório src, na qual posso editar esses arquivos para começar a construir meu projeto.

Organizei o projeto em arquivos como App.js, Clock.js, e estilos como App.css, Clock.css, e reset.css (com este último arquivo sendo para retirar o style padrão dos navegadores).

Estrutura de Componentes 🔄

Criei o componente "Clock" para lidar com a exibição e a funcionalidade do relógio digital, enquanto o componente principal App contém a estrutura geral.

Para criar esse design, o componente Clock é dividido em várias className: clock__space-button, clock__button, clock__display, display__hours, clock__supports, e support. Com eles, eu consegui criar cada parte do relógio para formar esse visual.

Funcionalidade do Relógio ⌚

constructor(props) {
    super(props);
    this.state = {
      currentTime: '00:00:00'
    }
  }

  componentDidMount() {
    setInterval(() => {
      this.setState({ currentTime: new Date().toLocaleTimeString() })
    }, 1000 );
  }

  render() {
    return(
      <div className='clock'>
        <div className='clock__space-button'>
          <div className='clock__button'>
          </div>
        </div>
        <div className='clock__display'>
          <div className='display__hours'>
            <h1>{this.state.currentTime}</h1>
          </div>
        </div>
        <div className='clock__supports'>
          <div className='support'></div>
          <div className='support'></div>
        </div>
      </div>
    );
  }

O componente Clock utiliza o estado do React para armazenar a hora atual (currentTime). O estado inicial é definido como '00:00:00'. O método de ciclo de vida componentDidMount é utilizado para obter a hora atual com toLocaleTimeString, além de atualizar o estado a cada segundo usando setInterval, garantindo que a exibição do relógio esteja sempre atualizada.

A hora é exibida dentro da seção display__hours usando uma tag h1.

Depois é exibida no App.js com o componente Clock.

render() {
    return(
      <div className='container'>
        <div className='container__content'>
          <Clock/>
        </div>
      </div>
    );
  }

Conclusão

Mesmo sendo simples e desenvolvido por alguém que esta começando no React, espero que curtem o projeto.

Vocês podem ver o resultado no Vercel e no repositório

Behance Linkedin

Muito interessante! Class components são uma maneira clássica de escrever componentes no React, mas vale a pena considerar algumas coisas ao usá-los. Uma das principais razões pelas quais a comunidade do React tem migrado para o uso de functional components e hooks é por causa da simplicidade e da facilidade de entender o código. Os functional components tendem a ser mais simples e concisos. Eles são mais fáceis de testar e entender, e com a introdução dos hooks, você pode facilmente adicionar funcionalidades como state e efeitos sem a necessidade de converter seu componente em uma class. A própria documentação oficial do React recomenda que seu uso seja descontinuado. Continue explorando e aprendendo sobre as melhores práticas do React. Você está no caminho certo!

Muito obrigada! Sim, meu próximo tópico são os hooks. Como não entrei nesse assunto ainda, bem interessante de saber que eles são mais legíveis e simples, me anima continuar nessa trilha. É satisfatório ver um método de desenvolvimento ser cada vez mais sendo refinado. Estou treinando bastante essa base para conhecer o propósito do React e acredito que fique ainda mais fácil entender os hooks posteriormente. Obrigada pela sugestão, conselhos como este deixa ainda mais rico o caminho de aprendizagem.

interessante essa abordagem com classes, mas já antiga. Onde voce está aprendendo React que apresenta primeiro essa abordagem? Pergunto porque gostaria de ver mais por curiosidade.

Estou experimentando um curso da Udemy de React, na qual infelizmente não estou curtindo tanto quanto eu gostaria. Por isso estou lendo e vendo vídeos em outros lugares sobre para conhecer mais visões que as pessoas tem desta biblioteca. Aham, é uma abordagem mais antiga, mas acredito que o curso tenha ensinado esse modo para compreendermos mais a base do React. O próximo módulo são os hooks. Valeu por compartilhar informação!