TGViewer
Руслан Куянец | Reactify Руслан Куянец | Reactify @reactify_it · 6.43K subscribers
Post #923 1.84K

Forwarded from Айтишница Даша | Frontend

- Почему нельзя просто написать функцию в React?

- Можно, если это чистая функция

- А если нет?


💭Представь, тебе нужно получить погоду через fetch-запрос. Ты пишешь привычную функцию:

function MyComponent() {
const [data, setData] = useState(null);

const fetchData = async () => {
const response = await fetch(url)
const data = await response.json()
setData(data)
};

fetchData()

return <div>Loading...</div>
}


1️⃣ В fetchData обращаемся к серверу за данными.

2️⃣ Мы обновляем состояние компонента, отдавая данные с помощью setData.

3️⃣ Компонент отрисовывается со свежими данными.

4️⃣ fetchData вызывается снова.

В результате у нас получается бесконечный цикл !



✅UseEffect

🟣Вызывает функцию в определенные моменты жизни компонента.

🟣Используется после рендеринга, но до того, как он обновляет экран пользователя.

🚩Это значит, что даже если в теле useEffect выполняется долгая операция, пользовательский интерфейс продолжит отображаться без задержек в обновлении.

useEffect(() => {наша функция} , [массив зависимостей])




🍳Массив зависимостей🗑️

Содержит список всех переменных, от которых зависит эффект:

🟣Пустой массив []

Эффект выполнится один раз при монтировании компоненты.

🟣Пропсы,состояния, контекст
[props, state, context]

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



‼️‼️‼️‼️
Перепишем наш запрос для получения погоды:

import { useState, useEffect } from 'react';

function MyComponent() {
const [data, setData] = useState(null)

const fetchData = async () => {
const response = await fetch(url)
const data = await response.json()
setData(data)
}

useEffect(() => {
fetchData()
}, [])

return data ? <div>{data}</div> : <div>Loading...</div>
}


*useEffect не может быть async, поэтому вкладываем ее внутрь

Как мы решили проблему?

1️⃣ Поместили вызов функции в наш хук
2️⃣ Задали пустой массив зависимостей, чтобы функция отработала один раз при создании компонента.

(Часть 1)

#react
  • 👍 25
  • 🔥 5
  • ❤ 2
  • 😁 1
More from @reactify_it
  1. Oct 8, 2026Последний месяц жестко марафонил :) С утра до вечера, без выходных. Решил наконец подвести…
  2. Oct 2, 2026Что вообще для меня значит ИТ-АДАПТАЦИЯ? Это — РАБОТА ЛЮБОЙ ЦЕНОЙ. Сейчас такое время, ког…
  3. Oct 1, 2026А тем временем цены растут. Бесплатный ChatGPT, во-первых, как будто отупел, во-вторых, ли…
  4. Sep 30, 2026Ребята, если у вас уже есть опыт, но вы чувствуете, что он выглядит «непродающим» в резюме…
  5. Sep 29, 2026👩‍💻 ВСЯ инфраструктура за 30 минут: Kubernetes, ArgoCD, Grafana, CI/CD https://www.youtu…
  6. Sep 28, 2026В общем, что-то такое получилось 😁 Превью сделано нейронкой, но буду переделывать с помощ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →