Back to questions
Junior — Middle
54
Объясните принцип работы хука useReducer в React и в каких случаях его рекомендуется применять
Answer from AI
sobes.tech AI
Хук useReducer в React используется для управления сложным состоянием компонента, особенно когда логика обновления состояния зависит от предыдущего состояния или когда есть несколько связанных значений.
Принцип работы:
useReducerпринимает редьюсер — функцию, которая получает текущее состояние и действие (action), и возвращает новое состояние.- Возвращает массив из текущего состояния и функции
dispatch, с помощью которой можно отправлять действия для обновления состояния.
Рекомендуется применять useReducer, когда:
- Состояние сложное и содержит несколько подполей.
- Логика обновления состояния сложна и зависит от типа действия.
- Нужно централизованно управлять изменениями состояния.
Пример:
import React, { useReducer } from 'react';
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>+</button>
<button onClick={() => dispatch({ type: 'decrement' })}>-</button>
</>
);
}