React Hook - useReducer


O useReducer é um dos React Hooks que oferece uma alternativa ao useState para gerenciar estados mais complexos em componentes funcionais. Enquanto o useState é adequado para estados simples, o useReducer é particularmente útil quando o estado do componente envolve lógica mais avançada ou depende de múltiplas ações.

Sintaxe

A sintaxe básica do useReducer envolve a criação de uma função redutora e a utilização de um estado inicial. A função redutora é responsável por especificar como o estado deve ser atualizado em resposta a diferentes ações.

import React, { useReducer } from 'react';
 
const reducer = (state, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    case 'DECREMENT':
      return { count: state.count - 1 };
    default:
      return state;
  }
};
 
const initialState = { count: 0 };
 
const Counter = () => {
  const [state, dispatch] = useReducer(reducer, initialState);
 
  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button>
    </div>
  );
};

No exemplo acima, reducer é uma função que especifica como o estado deve ser atualizado em resposta a diferentes tipos de ações (INCREMENT e DECREMENT). O useReducer é então utilizado com o estado inicial (initialState) para criar um par de valores: o estado atual e uma função dispatch que permite enviar ações para o redutor.

Benefícios do useReducer

  1. Lógica complexa de estado: Quando o estado do componente envolve lógicas mais complexas, o useReducer pode proporcionar uma estrutura mais organizada e fácil de manter em comparação com o useState.

  2. Redução de lógica dentro dos componentes: Com o useReducer, você pode reduzir a lógica relacionada ao estado, especialmente em componentes onde a lógica de gerenciamento de estado pode se tornar extensa.

Referências