Table of Contents

Method Memoized

Namespace
Velvet
Assembly
Velvet.Docs.dll

Memoized(Func<VNode>, params object?[]?)

Memoization node. Skips rebuilding the child subtree while the dependency array is unchanged. When key is omitted, the order of MemoNodes within the same component must remain stable, since identity is resolved by call order. If the order can change dynamically, use MemoizedWithKey(string?, Func<VNode>, params object?[]?) instead. This is distinct from Memo<TProps>(Func<TProps, VNode>, TProps, Func<TProps, TProps, bool>, string?), which memoizes a function-style component by props equality.

public static MemoNode Memoized(Func<VNode> factory, params object?[]? deps)

Parameters

factory Func<VNode>

Factory invoked to produce the cached VNode when deps change.

deps object[]

Dependency values. When equal to the previous render, the cached VNode is reused; Dependencies states the branch each element type takes. Pass an empty array to declare no dependencies and cache the subtree for the node's whole life; null declares no dependency array, which no newly built node's comparison can satisfy.

Returns

MemoNode

The created MemoNode.

Memoized(Func<VNode>)

Declares no dependency array, for a factory whose inputs are not expressible as one: a newly built node never reuses the cached subtree, so a call site inside a render body rebuilds every render.

public static MemoNode Memoized(Func<VNode> factory)

Parameters

factory Func<VNode>

Factory invoked on every reconcile to produce the subtree.

Returns

MemoNode

The created MemoNode.

Remarks

The single-argument overload exists so that omitting deps is unambiguous — see UseCallback<T>(T) for the hazard it avoids. To cache the subtree for the node's whole life instead, pass an empty array.