Переход с useState на useReducer в React Hooks

Переход с useState на useReducer в React Hooks

23 июня 2023 г.

useState и useReducer являются перехватчиками React< /a>, которые позволяют вам управлять состоянием ваших компонентов. useState — это более простой хук, который позволяет вам управлять одной частью состояния, в то время как useReducer является более мощным и позволяет вам управлять более сложными состояниями, которые могут иметь несколько значений и требовать более сложные обновления.

Чтобы преобразовать useState в useReducer, выполните следующие общие действия:

  1. Определите начальное состояние и тип действия.
  2. Замените хук useState на хук useReducer.
  3. Создайте функцию-редуктор, которая принимает состояние и действие и возвращает новое состояние.
  4. Обновите компонент, чтобы использовать новое состояние и функции отправки, возвращаемые хуком useReducer, в который должны быть переданы редьюсер и начальное состояние.

Вот базовый пример того, как преобразовать компонент, который использует useState для управления одной частью состояния.

Начните с компонента счетчика:

Чтобы преобразовать это в использование useReducer, мы можем выполнить шаги, описанные выше:

  1. Определите начальное состояние и тип действия:

javascript const InitialState = {количество: 0}; const INCREMENT = 'приращение';

2. Замените хук useState на хук useReducer:

```javascript импортировать React, {useReducer} из 'реакции';

const Counter = () => { const [состояние, отправка] = useReducer(reducer, initialState);

} ```

3. Создайте функцию-редуктор, которая принимает состояние и действие и возвращает новое состояние:

javascript const reducer = (состояние, действие) => { переключатель (действие.тип) { УВЕЛИЧЕНИЕ случая: вернуть {количество: state.count + 1}; по умолчанию: выдать новую ошибку(); }

4. Обновите компонент, чтобы он использовал новое состояние и функции отправки, возвращаемые хуком useReducer, в который должны быть переданы редьюсер и начальное состояние:

```javascript const Счетчик = () => { const [состояние, отправка] = useReducer(reducer, initialState);

} ```

На шаге 4 функция диспетчеризации используется для отправки действия функции редуктора. Затем функция редуктора возвращает новое состояние на основе типа действия. Компонент также обновлен для использования state.count вместо переменной count, ранее возвращаемой useState.

В этом простом примере useReducer не дает много преимуществ по сравнению с useState. Но в целом по мере усложнения компонентов useReducer предоставляет более мощный и гибкий способ управления состоянием, особенно если у вас есть более сложное состояние, требующее нескольких значений и более сложных обновлений.

:::информация Первоначально эта статья была опубликована здесь.

:::

Дайте мне знать, что вы думаете в комментариях!


Оригинал