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

RedDeveloper
05.05.2023 09:44
Массив зависимостей в React

Все о массиве Dependency и его связи с useEffect.

1 ] useEffect() в двух словах 📌

Хук useEffect() в React позволяет выполнять побочные эффекты в ваших компонентах и запускается при каждом рендере. Некоторые побочные эффекты включают в себя выборку данных, обновление DOM, изменение CSS-эффектов и таймеров. UseEffect принимает два параметра - функцию для выполнения побочного эффекта и зависимость (необязательную).

useEffect(<function>,<dependency>);

2 ] Массив зависимостей ✍🏻

Массив зависимостей в основном указывает хуку "срабатывать только при изменении массива зависимостей". Как упоминалось выше, каждый рендеринг будет вызывать useEffect для повторного выполнения побочного эффекта! Вот где полезны массивы зависимостей, чтобы контролировать запуск побочных эффектов. Рекомендуется всегда передавать второй параметр, принимающий массив. Ниже приведен пример для дальнейшего пояснения -

1) Dependency Passed (Empty array).

useEffect(() =>{
  fetch('https://iamlearningreact.com');
// RUNS ONLY ON THE FIRST RENDER
},[]);

2) Without Dependency 

useEffect(() =>{
// RUNS ON EVERY RENDER
console.info("I'LL BE CALLED ON EVERY RENDER!🤷‍♀️");
});

Если вы передаете пустой массив [], ваш побочный эффект будет выполняться только один раз (очень часто, когда вы хотите получить что-то). Если у вас массив с несколькими зависимостями, хук будет срабатывать при изменении любого из элементов массива:

useEffect(() => {
  // this will run if `value1` OR `value2` changes
  console.info('Either value1 or value2 changed (or both');
}, [value1, value2]);

3 ] Что должно быть помещено в массив зависимостей? ✨

Если переменная объявлена вне хука, но используется внутри него, то она должна находиться в массиве depenendency. Он включает в себя как переменные, так и функции.
import { useEffect } from 'react';

const Example (){
  const name = 'Cam';

  const exampleFunction = (age) =>{
              console.info(`My name is ${name} and I am ${age} year's old`);
    };

  useEffect(() =>{

      exampleFunction(22);

  }[name, exampleFunction]);

return <p> React Hooks (●'◡'●) </p>
}

Хуки React, которые имеют зависимости, - useEffect(), useLayoutEffect(), useCallback(), useMemo(), useImperativeHandle() [мало используется].

Спасибо, что читаете! Загляните в мой профиль для других статей, связанных с PHP, React, Node. 😊

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.