1 Определения :
Чтобы объяснить концепцию хуков в React, важно начать с объяснения терминов, приведенных ниже:
✔️A React-компонент - это функция, которая отображает HTML-элемент. Компоненты React могут быть как классами, так и функциями.
✔️React классы-компоненты) используют жизненный цикл React для управления состоянием и событиями компонента.
✔️The Жизненный цикл React - это набор событий, которые происходят в течение жизни компонента React. События жизненного цикла позволяют разработчикам взаимодействовать с компонентом React в разные моменты его жизни.
✔️React Функции (компоненты функций) используют хуки для управления состоянием и событиями компонента.
2. Что такое крючок?
Хуки - это функции, которые позволяют разработчикам управлять состоянием и получать доступ к функциям жизненного цикла React без необходимости писать класс.
Чтобы объяснить, что такое хуки, можно использовать следующую аналогию:
Классы React похожи на стиральные машины. У них есть жизненный цикл, который позволяет им стирать белье.
Функции React похожи на стиральные машины без жизненного цикла. Они должны использоваться со специальными инструментами для стирки белья.
Hooks - это такие инструменты ⚙️ Они позволяют функциям React получать доступ к функциям жизненного цикла React.
🔸 Le Hook UseState() :
Хук useState() : Позволяет управлять состоянием компонента React.
function App() {
const [number, setNumber] = useState(0);
return (
<div>
<h1>Число: {number}</h1>
<button onClick={() => setNumber(number + 1)}>+1</button>
</div>
);
}
Этот компонент React использует хук useState() для управления состоянием числа. Переменная number представляет собой текущее состояние числа. Функция setNumber() позволяет изменять состояние числа.
Хук ➡️The useState() возвращает 2 значения: текущее значение состояния и функцию, которая позволяет изменить состояние.
📌Существует множество хуков, каждый из которых имеет свое собственное назначение.
На 🗃️Here приведены некоторые из наиболее распространенных хуков:
- useState(): Позволяет управлять состоянием компонента React.
- useEffect(): Позволяет реагировать на изменения в окружении компонента React.
- useContext(): Позволяет получить доступ к контексту из компонента React.
- useReducer(): Позволяет управлять сложным состоянием компонента React.
- useParams() …..etc
🔸 Le Hook UseEffect():
Хук useEffect() позволяет компоненту React выполнять действия в определенное время и при изменении определенных свойств или состояния. Он полезен для выполнения побочных эффектов, таких как:
Получение данных Обновление DOM Добавление или удаление слушателей событий
Хук useEffect() принимает 2 аргумента: функцию и массив зависимостей :`
useEffect(() => { // Код для выполнения после рендеринга компонента // и после каждого обновления }, [dependency]);.
Функция ✔️The выполняется после рендеринга компонента и после каждого обновления. Таблица зависимостей ✔️The позволяет указать значения, которые должны вызывать выполнение функции. При изменении значения в массиве зависимостей функция будет выполнена.
Пример использования хука useEffect() для обновления DOM:
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = count;
}, [count]);
return (
<div>
<h1>Count: {count}</h1>
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
В этом примере хук useEffect() используется для обновления заголовка страницы каждый раз, когда изменяется значение переменной count. Это происходит потому, что переменная count включена в таблицу зависимостей.
Пример использования хука useEffect() для получения данных:
function App() {
const [users, setUsers] = useState([]);
useEffect(() => {
fetch('https://api.github.com/users')
.then((response) => response.json())
.then((data) => setUsers(data));
}, []);
return (
<ul>
{users.map((user) => (
<li key={user.id}>[user.login]</li>
))}
</ul>
);
}
В этом примере хук useEffect() используется для получения данных из API GitHub. Функция выполняется только один раз, после первоначального рендеринга компонента. Это связано с тем, что таблица зависимостей пуста [ ] .
✔️Hooks - это мощный способ управления состоянием и побочными эффектами в компонентах React. ✔️The хук useEffect() особенно полезен для выполнения асинхронных операций, таких как выборка данных.
Пример: Добавление или удаление слушателей событий С помощью хука useEffect() можно добавлять или удалять слушателей событий в компоненте React.
Чтобы добавить прослушиватель событий, просто используйте функцию addEventListener() в функции хука useEffect().
Функция addEventListener() принимает два аргумента: событие, которое нужно прослушать, и функцию обратного вызова, которая будет вызвана при наступлении события.`
window.removeEventListener('click', handlclick]);
Вот пример добавления слушателя событий для щелчка по кнопке:
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
document.getElementById('button').addEventListener('click', () => {
setCount(count + 1);
});
}, []);
return (
<div>
<h1>Счет: {count}</h1>
<button id="button">+1</button>
</div>
);
}