parent destroyable context, usually this
Array of non-primitives to map over
This can be class instances, plain objects, or anything supported by WeakMap's key
How to transform each element from data
,
similar to if you were to use Array map yourself.
This function will be called only when needed / on-demand / lazily.
an object that behaves like an array. This shouldn't be modified directly. Instead, you can freely modify the data returned by the data
function, which should be tracked in order to benefit from this abstraction.
import { map } from 'reactiveweb/map';
class MyClass {
wrappedRecords = map(this, {
data: () => this.records,
map: (record) => new SomeWrapper(record),
}),
}
Reactivily apply a
map
function to each element in an array, persisting map-results for each object, based on identity.This is useful when you have a large collection of items that need to be transformed into a different shape (adding/removing/modifying data/properties) and you want the transform to be efficient when iterating over that data.
A common use case where this
map
utility provides benefits over isEven though the above is
@cached
, if any tracked data accessed during the evaluation ofwrappedRecords
changes, the entire array.map will re-run, often doing duplicate work for every unchanged item in the array.