Реагировать на крючки

Хуки были представлены в феврале 2019 года и позволяют программисту повторно использовать логику с отслеживанием состояния без необходимости изменять иерархию компонента. Они стали очень популярным методом, поскольку делают ваш код более кратким и пригодным для повторного использования. До хуков программист должен был использовать компоненты класса и функции жизненного цикла для управления состоянием и побочными эффектами. Это больше не так, однако по-прежнему рекомендуется иметь знания о компонентах на основе классов. В этой статье мы рассмотрим пару наиболее распространенных хуков, таких как useState и useEffect, и дадим краткое описание некоторых из менее распространенных хуков. Первое, что вам нужно сделать при работе с хуками, — это импортировать их вверху вашего файла из react.

import { useState } { useEffect } { useContext } { useRef } { useMemo } { useCallback }   from 'react'

useState

Этот хук позволяет вам добавлять состояние к функциональному компоненту. Он возвращает значение состояния и функцию для обновления этого значения.

const [exampleState, setExampleState] = useState('Example');

Первое значение «exampleState» — это текущее состояние внутри компонента, и оно должно быть инициализировано ожидаемым типом возврата, например, строкой, массивом, числом, логическим значением или объектом. В нашем примере мы инициализировали состояние строковым значением.

Второе значение «setExampleState» — это функция, используемая для установки состояния внутри компонента. Состояние в компоненте обычно обновляется, когда пользователь делает что-то в приложении, чтобы активировать функцию useState.

Использование оператора спреда для обновления состояния

Оператор распространения может использоваться для обновления определенного свойства внутри объекта.

const [character, setCharacter] = useState(
    {name: "John Snow",
    age: 32,
    weapon: "sword"});

    setCharacter(previousState => {
      return { ...previousState, weapon: "spear" }
    });

использовать эффект

Этот хук используется для выполнения побочных эффектов, таких как получение данных из API, непосредственное обновление DOM и таймеров. Он запускается после рендеринга компонента и может выполнять монтирование компонента, а также обновления. Хук принимает два аргумента: функцию и зависимость.

useEffect( ( Place parameter here ) => { Place Logic here  }, [Place Dependency Here] );

Если зависимость оставлена ​​пустой, хук будет отображаться только один раз, когда компонент будет смонтирован. В противном случае вы можете использовать зависимость в пустых скобках массива, чтобы хук отображался каждый раз, когда зависимость изменяется. Как правило, состояние размещается как зависимость, поэтому при изменении состояния эффект срабатывает снова.

Другие, реже используемые хуки с определениями:

  1. useContext. Можно использовать useState для более легкого совместного использования состояния между глубоко вложенными компонентами, чем только с useState. Используется, когда у вас много разных компонентов и вам нужен доступ. Часто не используется, так как мы можем сделать то же самое, передав реквизит.
  2. useRef: предоставляет способ ссылки на изменяемое значение, которое сохраняется при визуализации компонента. Его можно использовать для доступа к элементам DOM, сохранения предыдущих значений и многого другого.
  3. useMemo: позволяет запоминать, что означает, что это помогает оптимизировать дорогостоящие вычисления, кэшируя результат до тех пор, пока не изменятся зависимости.
  4. useCallback: запоминает функцию, чтобы она создавалась заново только в случае изменения ее зависимостей. Это может быть полезно для оптимизации производительности, особенно в сценариях, где функции передаются в качестве свойств дочерним компонентам.
  5. useReducer: позволяет использовать пользовательскую логику состояния и используется, когда вы пытаетесь отслеживать несколько частей состояния, основанных на сложной логике.