«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Глубокое погружение в React Hooks

Глубокое погружение в React Hooks

Опубликовано 28 августа 2024 г.
Просматривать:982

React Hooks — это мощная функция, представленная в React 16.8, которая позволяет вам использовать состояние и другие функции React без написания класса. Они позволяют вам организовать логику внутри компонента, делая ваш код более чистым и пригодным для повторного использования. Давайте углубимся в некоторые из наиболее часто используемых React Hooks:

1. использовать состояние

  • Хук useState в React позволяет добавлять состояние к функциональным компонентам. Он возвращает массив с двумя элементами: значением текущего состояния и функцией для обновления этого состояния.

Основное использование:

Deep Dive into React Hooks

  • state: текущее значение состояния.

  • setState: функция для обновления состояния.

Ключевые моменты:

  • Начальное состояние: начальное состояние может быть любым типом данных, например числом, строкой, объектом или массивом.

  • Обновление состояния. Вы можете обновить состояние, передав новое значение в setState или используя функцию, которая принимает предыдущее состояние в качестве аргумента.

  • Повторная визуализация: обновление состояния запускает повторную визуализацию компонента.

  • Отложенная инициализация: для сложного начального состояния вы можете передать функцию useState для вычисления начального значения только при первом рендеринге.

Пример:

Deep Dive into React Hooks

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

2. использоватьЭффект

  • Хук useEffect в React позволяет вам выполнять побочные эффекты в ваших функциональных компонентах. Побочные эффекты могут включать получение данных, ручное манипулирование DOM или подписку на сервисы.

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • Первый аргумент — это функция, содержащая код побочного эффекта.

  • Необязательная функция возврата используется для очистки, например, для отказа от подписки на службу во избежание утечек памяти.

  • Второй аргумент представляет собой массив зависимостей. Эффект срабатывает только при изменении одной из зависимостей.

Массив зависимостей:

  • Если массив зависимостей пуст ([]), эффект запускается только один раз после первоначального рендеринга.

  • Если этот параметр опущен, эффект запускается после каждого рендеринга.

Распространенные случаи использования:

  • Извлечение данных из API при монтировании компонента.

  • Подписка на события (например, WebSocket, изменение размера окна) и очистка при отмонтировании компонента.

  • Обновление названия документа или взаимодействие с DOM.

Пример:

Deep Dive into React Hooks

Понимание useEffect имеет решающее значение для управления побочными эффектами и обеспечения ожидаемого поведения ваших компонентов при рендеринге.

3. использовать контекст

  • Хук useContext в React позволяет вам получать доступ к значениям контекста и использовать их в ваших функциональных компонентах. Контекст предоставляет возможность совместного использования значений (например, глобального состояния) между компонентами без необходимости передавать реквизиты вручную на каждом уровне.

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • Сначала вы создаете контекст с помощью React.createContext(), который возвращает объект контекста.

  • Этот объект контекста состоит из двух компонентов: поставщика и потребителя.

  • Компонент Provider предоставляет значение контекста, к которому могут получить доступ любые вложенные компоненты, использующие перехватчик useContext.

Пример:

Deep Dive into React Hooks

Когда использовать:

  • Используйте useContext, когда вам нужно глубоко передать данные через дерево компонентов без детализации свойств.

  • Это особенно полезно для тем, аутентификации пользователей, языковых настроек или любого глобального управления состоянием.

Важное примечание:

  • useContext будет запускать повторный рендеринг при каждом изменении значения контекста, поэтому используйте его разумно, чтобы избежать ненужных рендерингов в вашем дереве компонентов.

useContext упрощает использование значений контекста, упрощая управление глобальным состоянием вашего приложения.

4. использовать Редусер

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

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • reducer: функция, определяющая, как должно измениться состояние в зависимости от полученного действия. Он принимает текущее состояние и действие и возвращает новое состояние.

  • initialState: начальное значение состояния.

Пример:

Deep Dive into React Hooks

Когда использовать:

  • Используйте useReducer, если у вас сложная логика состояния, включающая несколько подзначений, или когда обновления состояния зависят от предыдущих значений состояния.

  • Это также полезно, когда вам нужно обработать несколько действий, которые могут по-разному повлиять на состояние.

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

5. используйте памятку

  • Хук useMemo в React используется для оптимизации производительности за счет запоминания результатов дорогостоящих вычислений, гарантируя, что они будут пересчитываться только при изменении их зависимостей. Это помогает избежать ненужных перерасчетов при каждом рендеринге.

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • useMemo принимает функцию, которая вычисляет значение и массив зависимостей.

  • Функция пересчитывается только при изменении одной из зависимостей.

  • Он возвращает запомненный результат вычисления.

Пример:

Deep Dive into React Hooks

Когда использовать:

  • Используйте useMemo, если у вас есть дорогостоящие расчеты, которые не нужно пересчитывать при каждом рендеринге.

  • Это особенно полезно для оптимизации производительности компонентов, требующих тяжелых вычислений или больших преобразований данных.

Важное примечание:

  • useMemo не гарантирует, что значение не будет пересчитано; он просто гарантирует, что он будет пересчитан только при изменении зависимостей.

  • Злоупотребление useMemo или его использование для тривиальных вычислений может добавить ненужную сложность без значительного увеличения производительности.

useMemo — мощный инструмент для оптимизации производительности, но его следует использовать разумно, чтобы найти баланс между производительностью и сложностью.

6. использовать обратный вызов

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

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • useCallback принимает функцию и массив зависимостей.

  • Функция запоминается и будет воссоздана только в случае изменения одной из зависимостей.

  • Он возвращает запомненную версию функции обратного вызова.

Пример:

Deep Dive into React Hooks

Когда использовать:

  • Используйте useCallback для запоминания функций обратного вызова, которые передаются в качестве реквизита дочерним компонентам, чтобы предотвратить ненужные повторные рендеринги.

  • Это полезно, когда дочерний компонент полагается на равенство ссылок, чтобы предотвратить ненужные рендеринги или избежать повторного создания функций внутри компонентов, которые запускают дорогостоящие операции.

Важное примечание:

  • useCallback помогает поддерживать стабильные ссылки на функции при рендеринге, что может повысить производительность компонентов, использующих эти функции.

7. использовать ссылку

  • Хук useRef в React используется для сохранения изменяемых значений при рендеринге, не вызывая повторного рендеринга. Его можно использовать для прямого доступа и взаимодействия с элементами DOM или для хранения изменяемых значений, которые не вызывают повторную отрисовку при обновлении.

Основной синтаксис:

Deep Dive into React Hooks

Как это работает:

  • useRef возвращает изменяемый объект с текущим свойством.

  • initialValue присваивается текущему при первом рендеринге.

  • Вы можете обновить текущий вариант, не вызывая повторного рендеринга.

Пример:

Deep Dive into React Hooks

Распространенные случаи использования:

  • Доступ к элементам DOM: для прямого взаимодействия с узлами DOM, например, для фокусировки ввода или измерения размера элемента.

  • Постоянные значения: для сохранения значений, которые необходимо сохранять при рендеринге, без запуска повторного рендеринга, например отслеживание предыдущих значений состояния или таймеров.

Важное примечание:

  • Обновления текущей версии не вызывают повторную отрисовку компонента.

  • useRef полезен в случаях, когда вам необходимо управлять значениями или элементами DOM или взаимодействовать с ними, не затрагивая логику рендеринга компонента.

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

Заключение

React Hooks упрощает управление состоянием, обработку побочных эффектов и другую логику в функциональных компонентах. Они способствуют повторному использованию кода и лучшей организации, позволяя извлекать логику в повторно используемые перехватчики. Понимание этих хуков и их правильное использование могут значительно улучшить ваши навыки разработки React.

Пожалуйста, поделитесь своим мнением по этому поводу. Приятного кодирования!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/khushboo-tolat/deep-dive-into-react-hooks-47k5?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3