Sobes.tech
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>
    </>
  );
}