UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

27 lines (26 loc) 1.87 kB
import { IStorageBase } from '../../core'; export interface UseStorageSubscribeOptions<R> { /** * Функция сравнения предыдущего и нового среза. Если возвращает `true`, * снапшот не меняется по ссылке и компонент НЕ ререндерится — даже если * остальное состояние стора изменилось. Полезно, когда селектор возвращает * объект/массив (новая ссылка на каждый тик) или когда нужно ререндерить * только при изменении конкретного среза. */ equals?: (a: R, b: R) => boolean; } /** * Хук для подписки на изменения в хранилище. * Использует useSyncExternalStore для корректной работы в Concurrent Mode. * * Принимает IStorageBase (общий интерфейс для sync и async хранилищ), * так как подписки одинаковы для всех типов. * * @template S - Тип состояния хранилища * @template R - Тип возвращаемого значения * @param storage - Экземпляр хранилища или null (до инициализации) * @param selector - Функция-селектор для выбора данных * @param options - Опции: `equals` для мемоизации снапшота (см. {@link UseStorageSubscribeOptions}) * @returns Значение из хранилища */ export declare const useStorageSubscribe: <S extends Record<string, any>, R = any>(storage: IStorageBase<S> | null, selector: (state: S) => R, options?: UseStorageSubscribeOptions<R>) => R | undefined;