Загрузка...
Загрузка...
useReducer — это React-хук, позволяющий управлять состоянием компонента с помощью редьюсера — функции, аналогичной reducer из Redux.
Он особенно полезен, когда:
const [state, dispatch] = useReducer(reducer, initialState);
reducer — функция, которая принимает state и action, и возвращает новое состояние.initialState — начальное состояние.state — текущее состояние.dispatch(action) — способ вызвать обновление состояния.import { 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:
return state;
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<div>
<p>Счет: {state.count}</p>
<button onClick={() => dispatch({ type: "decrement" })}>-</button>
<button onClick={() => dispatch({ type: "increment" })}>+</button>
</div>
);
}
Редьюсер — это чистая функция, которая не имеет побочных эффектов и всегда возвращает новое состояние на основе текущего состояния и действия (action).
(state, action) => newState
Преимущество useReducer:
Хук useReducer помогает организовать бизнес-логику отдельно от компонентов, делая их чище и легче для тестирования.
useReducer — альтернатива useState, особенно полезна для сложной логики состояния.