Domine a criação de Hooks personalizados para temas claro e escuro em React

Aprenda a implementar um Hook que alterna entre temas claro e escuro em suas aplicações React.

Criando um Hook Personalizado para Temas Claro e Escuro

Neste tutorial, vamos explorar como criar um Hook personalizado em React que nos permitirá alternar entre temas claro e escuro. Essa funcionalidade é cada vez mais comum em aplicações modernas, proporcionando uma melhor experiência ao usuário, dependendo das suas preferências visuais.

Por que usar Hooks?

Os Hooks foram introduzidos no React 16.8 e permitem que você use estado e outros recursos do React sem escrever uma classe. Eles são uma maneira mais simples e concisa de gerenciar o estado dentro de componentes funcionais. Para nosso caso, um Hook personalizado é a solução ideal para encapsular a lógica de alternância de temas.

Implementando o Hook

Primeiro, vamos criar um arquivo chamado useTheme.js onde implementaremos nosso Hook. Aqui está o código:

import { useState, useEffect } from 'react';

const useTheme = () => {
    const [theme, setTheme] = useState('light');

    useEffect(() => {
        const savedTheme = localStorage.getItem('theme');
        if (savedTheme) {
            setTheme(savedTheme);
        }
    }, []);

    const toggleTheme = () => {
        const newTheme = theme === 'light' ? 'dark' : 'light';
        setTheme(newTheme);
        localStorage.setItem('theme', newTheme);
    };

    return [theme, toggleTheme];
};

export default useTheme;

O código acima cria um Hook chamado useTheme. Inicialmente, o tema é definido como 'light'. O Hook também verifica se há um tema salvo no localStorage do navegador e o aplica. A função toggleTheme alterna entre os temas claro e escuro e também salva a escolha do usuário.

Usando o Hook no Componente

Agora que temos nosso Hook, vamos utilizá-lo em um componente. Aqui está um exemplo de como podemos implementar isso em um componente funcional:

import React from 'react';
import useTheme from './useTheme';

const App = () => {
    const [theme, toggleTheme] = useTheme();

    return (
        <div className={theme}>
            <h1>Olá, Mundo!</h1>
            <button onClick={toggleTheme}>Alternar Tema</button>
        </div>
    );
};

export default App;

Neste trecho de código, utilizamos o Hook useTheme em nosso componente App. O tema atual é aplicado à classe do div que envolve o conteúdo. Um botão é adicionado para permitir que os usuários alternem entre os temas.

Estilizando os Temas

Para que a alternância entre os temas seja visível, precisamos adicionar algumas regras CSS. Vamos criar um arquivo styles.css:

body {
    transition: background-color 0.5s, color 0.5s;
}

.light {
    background-color: white;
    color: black;
}

.dark {
    background-color: black;
    color: white;
}

As classes light e dark definem as cores de fundo e texto para cada tema. A propriedade transition suaviza a mudança entre os temas.

Conclusão

Você agora tem um Hook personalizado que permite alternar facilmente entre temas claro e escuro em suas aplicações React. Com essa abordagem, você pode melhorar a experiência do usuário e oferecer mais controle sobre a interface da sua aplicação. Não hesite em personalizar ainda mais este Hook, adicionando mais funcionalidades ou estilos conforme sua necessidade.

Dicas Finais

  • Teste a funcionalidade em diferentes navegadores para garantir que a persistência do tema funcione corretamente.
  • Considere adicionar uma animação mais complexa para a troca de temas, proporcionando uma experiência visual ainda mais agradável.
  • Explore a possibilidade de salvar preferências em cookies ou usar um contexto para gerenciar a preferência de tema em toda a aplicação.

Ao seguir este guia, você estará no caminho certo para criar aplicações React mais acessíveis e personalizadas, alinhadas às preferências dos usuários.

A personalização de temas em aplicações web tem ganhado destaque, especialmente com a crescente demanda por interfaces amigáveis e adaptáveis. O uso de temas claros e escuros não apenas melhora a estética das aplicações, mas também proporciona conforto visual em diferentes condições de iluminação. Neste contexto, entender como implementar um Hook personalizado em React para gerenciar essa alternância se torna uma habilidade valiosa para desenvolvedores. Ao dominar essa técnica, você não só aprimora suas aplicações, mas também oferece uma experiência mais envolvente aos usuários.

Algumas aplicações:

  • Melhorar a experiência do usuário.
  • Facilitar a leitura em diferentes condições de luz.
  • Aumentar a acessibilidade em aplicações web.

Dicas para quem está começando

  • Comece por entender como os Hooks funcionam no React.
  • Pratique a manipulação de estado e efeitos colaterais.
  • Explore como o localStorage pode ser utilizado para persistir dados.

Contribuições de Gabriel Nogueira

Compartilhe este tutorial: Como criar um Hook personalizado para alternar entre temas claro e escuro?

Compartilhe este tutorial

Continue aprendendo:

Como criar um Hook personalizado para armazenar dados no localStorage?

Aprenda a criar um Hook que facilita a manipulação de dados no localStorage em aplicações React.

Tutorial anterior

Como monitorar mudanças de estado com um Hook personalizado?

Aprenda a criar um Hook que monitora mudanças de estado em aplicações React.

Próximo tutorial