Métodos para Compartilhar Estado em React Sem Usar Context API

Aprenda a compartilhar estado entre componentes do React sem o uso da Context API.

Métodos para Compartilhar Estado em React Sem Usar Context API

Quando desenvolvemos aplicações em React, frequentemente nos deparamos com a necessidade de compartilhar estado entre diferentes componentes. Embora a Context API seja uma solução popular, existem outras abordagens que podem ser igualmente eficazes. Neste tutorial, vamos explorar algumas dessas alternativas, com exemplos práticos e explicações detalhadas.

Usando Props

Uma das maneiras mais simples de compartilhar estado entre componentes é através das props. Quando um componente pai possui um estado que precisa ser acessado por um componente filho, você pode passar esse estado como uma prop.

function Parent() {
    const [count, setCount] = useState(0);

    return <Child count={count} />;
}

function Child({ count }) {
    return <div>O contador é: {count}</div>;
}

No exemplo acima, o componente Parent possui um estado chamado count, que é passado para o Child como uma prop. O Child então pode acessar e exibir esse estado.

Levantar o Estado

Em alguns casos, pode ser necessário "elevar" o estado para um componente pai comum. Isso significa que, em vez de cada componente gerenciar seu próprio estado, você centraliza o estado em um componente pai e o passa para os filhos como props.

function App() {
    const [value, setValue] = useState('');

    return (
        <div>
            <Input value={value} setValue={setValue} />
            <Display value={value} />
        </div>
    );
}

function Input({ value, setValue }) {
    return <input value={value} onChange={(e) => setValue(e.target.value)} />;
}

function Display({ value }) {
    return <h1>{value}</h1>;
}

Aqui, o componente App é responsável por armazenar o estado value. O Input atualiza esse estado, e o Display o exibe. Essa abordagem é muito útil quando vários componentes precisam acessar e modificar o mesmo estado.

Custom Hooks

Outra maneira de compartilhar lógica de estado entre componentes é usando custom hooks. Você pode encapsular a lógica de estado em um hook e reutilizá-lo em diferentes componentes.

function useCounter() {
    const [count, setCount] = useState(0);
    const increment = () => setCount(count + 1);

    return { count, increment };
}

function Counter() {
    const { count, increment } = useCounter();

    return (
        <div>
            <h1>{count}</h1>
            <button onClick={increment}>Incrementar</button>
        </div>
    );
}

O useCounter encapsula a lógica de contagem, permitindo que você a reutilize facilmente em qualquer componente que precisar. Isso torna seu código mais modular e fácil de manter.

Recoil

O Recoil é uma biblioteca de gerenciamento de estado que pode ser vista como uma alternativa à Context API. Com o Recoil, você pode criar átomos de estado que podem ser acessados por qualquer componente que os utilize.

import { atom, useRecoilState } from 'recoil';

const countState = atom({
    key: 'countState',
    default: 0,
});

function Counter() {
    const [count, setCount] = useRecoilState(countState);

    return (
        <div>
            <h1>{count}</h1>
            <button onClick={() => setCount(count + 1)}>Incrementar</button>
        </div>
    );
}

No exemplo acima, o countState é um átomo que pode ser acessado por qualquer componente que utilize o Recoil. O gerenciamento de estado fica mais fácil e intuitivo, especialmente em aplicações grandes.

Conclusão

Compartilhar estado entre componentes em React pode ser feito de várias maneiras, e a escolha da abordagem depende do contexto da sua aplicação. Neste tutorial, discutimos o uso de props, elevação de estado, custom hooks e a biblioteca Recoil. Cada método tem suas vantagens e desvantagens, e é importante entender quando usar cada um deles para criar aplicações eficientes e escaláveis.

Entender como compartilhar estado entre componentes é fundamental para qualquer desenvolvedor React. Ao longo deste tutorial, você descobrirá que existem várias abordagens que podem ser utilizadas, cada uma com suas peculiaridades e benefícios. Aprender a manipular o estado de maneira eficaz não só melhora a performance da sua aplicação, mas também facilita a manutenção do código. Transforme seu conhecimento em habilidades práticas e aproveite as dicas e exemplos fornecidos para aprimorar sua experiência em React.

Algumas aplicações:

  • Desenvolvimento de aplicações web dinâmicas
  • Criação de dashboards interativos
  • Construção de formulários complexos

Dicas para quem está começando

  • Comece entendendo como as props funcionam.
  • Pratique a elevação de estado em pequenos projetos.
  • Explore a documentação do Recoil para entender melhor como funciona.
  • Não tenha medo de utilizar custom hooks para encapsular lógica de estado.
  • Teste suas implementações com diferentes abordagens para ver qual funciona melhor para você.

Contribuições de Gabriel Nogueira

Compartilhe este tutorial: Como compartilhar estado entre componentes sem usar Context API?

Compartilhe este tutorial

Continue aprendendo:

Como combinar múltiplos estados dentro de um mesmo componente React?

Aprenda a manipular múltiplos estados em componentes React de forma eficiente e organizada.

Tutorial anterior

Como definir estado baseado em uma condição inicial no React?

Aprenda a gerenciar estados em React com condições iniciais de forma simples e prática.

Próximo tutorial