Будет ли объект, возвращаемый хуком (`data`, `loading`, `error`), иметь одну и ту же ссылку между рендерами, если значения не изменялись? Почему? Как сохранить стабильную ссылку на объект?

Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.

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

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

Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.

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

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

Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.

useMemo(() => ({data, loading, error}), [data, loading, error]) сохраняет ссылку, пока зависимости равны по Object.is. Это полезно для зависимостей потребителя или memo-компонента, но не обязательно для любого hook. Нельзя исключать поля из зависимостей ради формальной стабильности.

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

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

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

Подробнее