Size: a a a

React: русскоязычное сообщество

2020 March 24

А

Алексей in React: русскоязычное сообщество
Michail
Привет, обьясните пж простыми словами разницу между
useEffect и useLayoutEffect
useEffect после отрисовки срабатывает а useLayoutEffect - до отрисовки компонента как метод componentDidMount(). Как правило useEffect - а хватает. useEffect происходит когда Dom уже отрисовался а  useLayoutEffect  блокирует отрисовку пока все не выполнит
источник

M

Michail in React: русскоязычное сообщество
Алексей
useEffect после отрисовки срабатывает а useLayoutEffect - до отрисовки компонента как метод componentDidMount(). Как правило useEffect - а хватает. useEffect происходит когда Dom уже отрисовался а  useLayoutEffect  блокирует отрисовку пока все не выполнит
Тоесть если у меня в useLayoutEffect будут асинхронные действия,
Запрос например, то сначала будем ждать ответ с только потом обновление дома
источник

A

Aleksandr in React: русскоязычное сообщество
Michail
Тоесть если у меня в useLayoutEffect будут асинхронные действия,
Запрос например, то сначала будем ждать ответ с только потом обновление дома
да
источник

A

Aleksandr in React: русскоязычное сообщество
Только не обновление, а отрисовка
источник

А

Алексей in React: русскоязычное сообщество
Да отрисовки
источник

M

Michail in React: русскоязычное сообщество
Обновление и отрисовка это две разные вещи?
источник

A

Aleksandr in React: русскоязычное сообщество
Алексей
Да отрисовки
Вот из доки.
Что же делает useEffect? Используя этот хук, вы говорите React сделать что-то после рендера. React запомнит функцию (то есть «эффект»), которую вы передали и вызовет её после того, как внесёт все изменения в DOM. В этом эффекте мы устанавливаем заголовок документа, но мы также можем выполнить запрос данных или вызвать какой-нибудь императивный API.
источник

M

Michail in React: русскоязычное сообщество
Aleksandr
Вот из доки.
Что же делает useEffect? Используя этот хук, вы говорите React сделать что-то после рендера. React запомнит функцию (то есть «эффект»), которую вы передали и вызовет её после того, как внесёт все изменения в DOM. В этом эффекте мы устанавливаем заголовок документа, но мы также можем выполнить запрос данных или вызвать какой-нибудь императивный API.
Я читал доку и про useEffect и про useLayout
источник

M

Michail in React: русскоязычное сообщество
Но что то путает меня
источник

A

Aleksandr in React: русскоязычное сообщество
Michail
Я читал доку и про useEffect и про useLayout
Так я с вами и не спорю
источник

M

Michail in React: русскоязычное сообщество
Тоесть один вызывается когда картинка на жкране обновлена
источник

M

Michail in React: русскоязычное сообщество
А второй когда обновлен дом
источник

M

Michail in React: русскоязычное сообщество
Но картинка нет
источник

A

Aleksandr in React: русскоязычное сообщество
Не
источник

A

Aleksandr in React: русскоязычное сообщество
Не так выразился походу
источник

A

Aleksandr in React: русскоязычное сообщество
UseEffect запускается ассинхронно(типа), т.е. вы отрендирились,  реакт говорит, я запускаю UseEffect, но рендер уже есть, при useLayout реакт говорит, так, у себя я все изменения внес, давай выполним твой хук
источник

M

Michail in React: русскоязычное сообщество
Aleksandr
UseEffect запускается ассинхронно(типа), т.е. вы отрендирились,  реакт говорит, я запускаю UseEffect, но рендер уже есть, при useLayout реакт говорит, так, у себя я все изменения внес, давай выполним твой хук
Как я понял одно и тоже:)
источник

A

Aleksandr in React: русскоязычное сообщество
Michail
Как я понял одно и тоже:)
Смена состояния => Рендер => UseEffect.
Смена состояния => useLayoutEffect => Рендер
источник

M

Michail in React: русскоязычное сообщество
Под Render мы понимаем изменения картинки на экране пользователя, или только Дома
источник

A

Aleksandr in React: русскоязычное сообщество
Картинки на экране
источник