use-memoize
Cache a function's results per argument list.
| Package | @vizejs/composable/use-memoize |
| Own the source | vize lib pull composable:use-memoize |
| Runtime exports | useMemoize |
| Gzip budget | 512 B |
Usage
import { useMemoize } from "@vizejs/composable/use-memoize";
Runtime contract
| Utility | Category | Stability | SSR | Hydration | Cleanup | Targets | Host globals | Uses |
|---|---|---|---|---|---|---|---|---|
useMemoize |
performance | experimental | safe | stable | returned-value | web, server, worker, native, desktop, terminal | — | — |
API
useMemoize
Cache a function's results per argument list. The default cache is a reactive Map, so computeds and templates that read a memoized value re-evaluate after load, delete, or clear. Promise-returning resolvers cache the promise itself, which deduplicates concurrent requests. Keys default to JSON.stringify(args) (a string); a custom getKey sets the key type, and a custom cache must use that key type. On the server keep memoized caches request-local (create them in setup), since a module-level cache is shared across requests.
function useMemoize<Arguments extends readonly unknown[], Result, Key>( resolver: (...args: Arguments) => Result, options: UseMemoizeOptions<Arguments, Key, Result> & { readonly getKey: (...args: Arguments) => Key; }, ): Memoized<Arguments, Result, Key>
const getUser = useMemoize((id: string) => fetchUser(id), { getKey: (id) => id });
const user = computed(() => getUser(props.id));
getUser.load(props.id); // refresh
useMemoize
function useMemoize<Arguments extends readonly unknown[], Result>( resolver: (...args: Arguments) => Result, options?: UseMemoizeOptions<Arguments, string, Result>, ): Memoized<Arguments, Result, string>
useMemoize
function useMemoize( resolver: (...args: readonly unknown[]) => unknown, options: UseMemoizeOptions<readonly unknown[], unknown, unknown> = {}, ): Memoized<readonly unknown[], unknown, unknown>
Types
MemoizeCache
Minimal cache contract used by useMemoize; a Map satisfies it.
| Member | Type | Description |
|---|---|---|
get |
(key: Key) => Result | undefined |
Read a cached result. |
set |
(key: Key, value: Result) => unknown |
Store a result. |
has |
(key: Key) => boolean |
Whether a result is cached for key. |
delete |
(key: Key) => unknown |
Drop one result. |
clear |
() => void |
Drop every result. |
UseMemoizeOptions
Options for useMemoize.
| Member | Type | Description |
|---|---|---|
getKey? |
(...args: Arguments) => Key |
Derive the cache key from the arguments. |
cache? |
MemoizeCache<Key, Result> |
Storage for results; supply an LRU or a persistent cache here. |
Memoized
Memoized function returned by useMemoize.
| Member | Type | Description |
|---|---|---|
load |
(...args: Arguments) => Result |
Recompute and re-cache the result for these arguments. |
delete |
(...args: Arguments) => void |
Drop the cached result for these arguments. |
clear |
() => void |
Drop every cached result. |
generateKey |
(...args: Arguments) => Key |
Cache key for these arguments. |
cache |
MemoizeCache<Key, Result> |
The underlying cache. |