Массив зависимостей в 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. 😊

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?

05.05.2023 14:00

Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом

05.05.2023 11:59

Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.

JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы

05.05.2023 11:57

Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.

Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий

05.05.2023 09:26

Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...

Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.

04.05.2023 13:44

Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science, веб-разработки, этот язык программирования по-прежнему остается в тренде.