Хук 'useReducer' в ReactJS используется для управления состоянием с помощью функции редуктора. Это лучший способ обрабатывать сложные состояния, которые включают множество подзначений или когда следующее состояние зависит от предыдущего.
Функция редуктора, которая используется с 'useReducer' принимает текущее состояние и действие и возвращает новое состояние. Это схоже с тем, как работает Redux, ведь идея редукторов пришла из функционального программирования, а именно из Redux.
Ниже приведен простой пример использования 'useReducer' в React.
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 (
<>
Count: {state.count}
<button onClick={() => dispatch({type: 'decrement'})}>-</button>
<button onClick={() => dispatch({type: 'increment'})}>+</button>
</>
);
}
В примере выше, 'useReducer' используется для управления состоянием счетчика. Функция редуктора изменяет значение счетчика в зависимости от типа действия, переданного в dispatch.
В общем, хук 'useReducer' является более продвинутой альтернативой 'useState' для управления сложными состояниями и делает ваш код более читаемым и легко тестируемым.