useIsomorphicLayoutEffect
Описание
useIsomorphicLayoutEffect — это безопасная версия useLayoutEffect, которая автоматически переключается на useEffect при выполнении на сервере (например, во время SSR).
- В браузере ведёт себя как
useLayoutEffect. - На сервере использует
useEffect, предотвращая предупреждение React: "useLayoutEffect does nothing on the server".
Сигнатура
ts
export const useIsomorphicLayoutEffect:
| typeof useLayoutEffect
| typeof useEffect;Пример
tsx
import { useIsomorphicLayoutEffect } from '@webeach/react-hooks';
function Component() {
useIsomorphicLayoutEffect(() => {
console.log('Runs layout effect only in the browser');
}, []);
return <div />;
}Когда использовать
- При написании компонентов, которые должны одинаково работать и в браузере, и на сервере.
- Чтобы избежать предупреждений React во время server-side rendering.
Когда не использовать
- В проектах, где не используется SSR (можно напрямую использовать
useLayoutEffect). - Когда достаточно обычного
useEffectбез синхронных DOM-операций.
Частые ошибки
Игнорирование SSR-предупреждений
- Использование
useLayoutEffectнапрямую может привести к предупреждениям на сервере.
- Использование
Смешение с
useEffect- Используйте
useIsomorphicLayoutEffect, когда нужны синхронные побочные эффекты в браузере и корректная работа при SSR.
- Используйте