Voltar ao blog

Como utilizar useConxtext no React

Por DevClub

Introdução

O React é uma biblioteca poderosa para construir interfaces de usuário, e um dos seus principais recursos é a capacidade de gerenciar o estado de forma eficiente. Entre as várias maneiras de lidar com o estado, o hook `useContext` se destaca por permitir o compartilhamento de dados entre componentes sem a necessidade de passar props manualmente em cada nível da árvore de componentes. Neste post, vamos explorar como utilizar o `useContext` de maneira prática e eficaz.

Se você já se sentiu sobrecarregado ao passar dados através de múltiplos componentes, não se preocupe! O `useContext` pode simplificar esse processo e tornar seu código mais limpo e legível. Vamos começar?

O que é o useContext?

O `useContext` é um hook do React que permite que você acesse o contexto criado com o `React.createContext()`. Com ele, você pode compartilhar dados entre componentes sem a necessidade de passar props manualmente.

Por que usar o useContext?

  • **Simplicidade**: Elimina a necessidade de prop drilling (passar props através de múltiplos níveis).
  • **Gerenciamento de estado global**: Facilita o compartilhamento de estados que precisam ser acessados em múltiplos componentes.
  • **Melhor organização**: Reduz a complexidade do seu código.

Como criar um Contexto

Para começar a usar o `useContext`, primeiro precisamos criar um contexto. Vamos criar um contexto simples que armazena informações sobre o tema da nossa aplicação (claro ou escuro).

Exemplo de Criação de Contexto

import React, { createContext, useState } from 'react';

// Criando o contexto
const ThemeContext = createContext();

// Componente provedor do contexto
const ThemeProvider = ({ children }) => {
  const [theme, setTheme] = useState('light'); // Estado inicial

  const toggleTheme = () => {
    setTheme((prevTheme) => (prevTheme === 'light' ? 'dark' : 'light'));
  };

  return (
    <ThemeContext.Provider value={{ theme, toggleTheme }}>
      {children}
    </ThemeContext.Provider>
  );
};

export { ThemeContext, ThemeProvider };

Nesse exemplo, criamos um `ThemeContext` que contém um estado de tema e uma função para alternar entre os temas. O `ThemeProvider` envolve nossos componentes para que eles possam acessar o contexto.

Usando useContext em Componentes

Agora que temos nosso contexto criado, vamos ver como usá-lo em um componente. Vamos criar um componente que muda o tema com base no contexto.

Exemplo de Uso do Contexto

import React, { useContext } from 'react';
import { ThemeContext } from './ThemeProvider';

const ThemeToggleButton = () => {
  const { theme, toggleTheme } = useContext(ThemeContext);

  return (
    <button onClick={toggleTheme}>
      Mudar para {theme === 'light' ? 'escuro' : 'claro'}
    </button>
  );
};

export default ThemeToggleButton;

Neste exemplo, o componente `ThemeToggleButton` usa o `useContext` para acessar o tema e a função para alterná-lo. Quando o botão é clicado, ele altera o tema da aplicação.

Integrando Tudo

Agora que temos o contexto e um componente que o utiliza, vamos integrar tudo isso em uma aplicação simples.

Exemplo Completo

import React from 'react';
import ReactDOM from 'react-dom';
import { ThemeProvider } from './ThemeProvider';
import ThemeToggleButton from './ThemeToggleButton';

const App = () => {
  return (
    <ThemeProvider>
      <div>
        <h1>Aplicação com useContext</h1>
        <ThemeToggleButton />
      </div>
    </ThemeProvider>
  );
};

ReactDOM.render(<App />, document.getElementById('root'));

Neste exemplo, o `App` envolve o `ThemeToggleButton` com o `ThemeProvider`, permitindo que o botão acesse o contexto e altere o tema.

Conclusão

O `useContext` é um recurso poderoso que simplifica o gerenciamento de estado em aplicações React. Ao usar o `useContext`, você pode evitar a complexidade de passar props por várias camadas de componentes. Experimente integrar o `useContext` em sua próxima aplicação e veja como ele pode tornar seu código mais limpo e gerenciável.

Se você gostou deste guia sobre como utilizar `useContext` no React, compartilhe com seus amigos e siga nosso blog para mais dicas e tutoriais sobre programação e desenvolvimento! Não hesite em deixar suas dúvidas nos comentários!

Inscrever agora para a próxima turma do DevClub?

Que tal não perder esta oportunidade e já se inscrever agora para a próxima turma do DevClub?