Как hook возвращает случайное число и позицию прокрутки

Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.

Короткий ответ

Что ответить на собеседовании

Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.

Подробный разбор

Ответ с пояснениями

Условие

Нужен React hook для клиента с поддержкой SSR: одно случайное число после монтирования и текущий window.scrollY. Начальный HTML сервера и клиента должен совпадать. Опишите реализацию.

Ответ

Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.

Возвращайте {random, scrollY} и показывайте placeholder, пока random равен null. Не генерируйте число в теле render: оно будет меняться и может нарушить hydration. Scroll-обработчик должен быть лёгким; при необходимости ограничьте обновления через requestAnimationFrame и отменяйте его при очистке. Используйте hook на верхнем уровне компонента.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее