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