Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.
Будет ли объект, возвращаемый хуком (`data`, `loading`, `error`), иметь одну и ту же ссылку между рендерами, если значения не изменялись? Почему? Как сохранить стабильную ссылку на объект?
Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если hook каждый раз возвращает литерал {data, loading, error}, ссылка будет новой. Для стабильности можно мемоизировать объект по этим значениям.
useMemo(() => ({data, loading, error}), [data, loading, error]) сохраняет ссылку, пока зависимости равны по Object.is. Это полезно для зависимостей потребителя или memo-компонента, но не обязательно для любого hook. Нельзя исключать поля из зависимостей ради формальной стабильности.