use-mutable-source
Version:
Minimal and elegant way to integrate any library with React
26 lines (25 loc) • 1.1 kB
TypeScript
import { type DependencyList } from 'react';
/**
* Generates a source. This process is considered with side-effects and runs
* every time a dependency changes.
*
* @param init - function that generates the source, it can optionally returns also a destroy function
* @param deps - dependency list that defines the source lifecycle
* @returns the source ref and a function to lazily initialize the source
*/
export declare function useFactory<Source>(init: () => [source: Source, destroy?: (source: Source) => void], deps: DependencyList): readonly [{
current: null;
destroy?: undefined;
} | {
current: Source;
destroy?: ((source: Source) => void) | undefined;
}, () => Source];
/**
* Generates a pure source. This process is considered side-effects free and
* runs every time a dependency changes.
*
* @param init - function that generates the pure source
* @param deps - dependency list that defines the source lifecycle
* @returns the source
*/
export declare const usePureFactory: <Source>(init: () => Source, deps: DependencyList) => Source;