useReducer Redutor de Estado
Última atualização: 2026-11-03
useReducer Redutor de Estado
useReducer concentra a pergunta "como o estado muda?" em uma única função redutora pura: despachar uma action a dispara e o redutor computa o novo estado a partir dessa action. Quando há muitas transições de estado, lógica complicada ou vários valores que devem mudar juntos, ele é mais claro e testável do que uma pilha de chamadas useState. O redutor é uma função comum, então pode ser exercitado por conta própria sem renderizar coisa alguma.
| Grupo | Efeitos e Desempenho |
|---|---|
| Tipo | Hook |
| Desde | React 16.8 |
ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.
📝 Sintaxe
function reducer(state, action) {
switch (action.type) {
case 'increment': return { count: state.count + 1 }
case 'reset': return { count: 0 }
default: return state // an unknown action returns the same state
}
}
const [state, dispatch] = useReducer(reducer, { count: 0 })
dispatch({ type: 'increment' })
⚙️ Parâmetros
| reducer | A função pura (state, action) => newState: sem efeitos colaterais, sem mutação direta do estado, e deve retornar um novo objeto. |
|---|---|
| initialArg | O estado inicial; um terceiro argumento pode passar um inicializador preguiçoso init(initialArg). |
Retorna:Retorna [state, dispatch], o estado atual e a função dispatch. A referência de dispatch nunca muda, então é seguro colocá-la em um array de dependências ou passá-la a um componente filho.
▶ Exemplo
O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.
Saída:
Os três botões despacham as actions inc, dec e reset; a contagem é calculada pelo redutor e a UI se atualiza em tempo real.