Vize

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.