Запуск некоторого кода после изменения состояния является распространенным желанием. Давайте посмотрим, как это сделать с помощью хуков.
Метод 1 — хук useEffect
Первым и наиболее часто используемым методом запуска функции после обновления состояния является хук useEffect
. useEffect
выполняет свою функцию только при изменении элементов в массиве зависимостей. Звучит довольно точно для того, что мы хотим, да? Давайте посмотрим на это в действии:
Довольно просто, каждый раз, когда name
изменяется, мы запускаем функцию, которая console.log
выводит имя.
Способ 2 — хук useReducer
Если вам нужны более сложные обновления состояния, когда обновление одного элемента состояния влияет на другой элемент состояния, вы можете обратиться к useReducer
.
Что, если бы у нас был статус, и мы хотели бы сохранить историю последних 10 статусов? Поскольку история зависит от изменений статуса, useReducer
будет хорошим выбором. Давайте посмотрим на это в действии:
tl;dr — если состояние (и код для запуска) простое, вы можете использовать useEffect
. Если у вас есть несколько элементов состояния, которые необходимо обновить в зависимости от изменений, используйте useReducer
.
Первоначально опубликовано на https://chriscolborne.com.