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
-
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 ouseState
. -
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.