Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.
Как hook возвращает случайное число и позицию прокрутки
Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужен React hook для клиента с поддержкой SSR: одно случайное число после монтирования и текущий window.scrollY. Начальный HTML сервера и клиента должен совпадать. Опишите реализацию.
Ответ
Начните с null для случайного числа и 0 для прокрутки. В эффекте после монтирования установите число, прочитайте scrollY и подпишитесь на scroll с обязательной очисткой.
Возвращайте {random, scrollY} и показывайте placeholder, пока random равен null. Не генерируйте число в теле render: оно будет меняться и может нарушить hydration. Scroll-обработчик должен быть лёгким; при необходимости ограничьте обновления через requestAnimationFrame и отменяйте его при очистке. Используйте hook на верхнем уровне компонента.