@solid-primitives/map
The reactive versions of Map
& WeakMap
built-in data structures.
Installation
npm install @solid-primitives/map
yarn add @solid-primitives/map
pnpm add @solid-primitives/map
ReactiveMap
and ReactiveWeakMap
A reactive version of Map
/WeakMap
data structure. All the reads (e.g. get
or has
) are signals, and all the writes (e.g. delete
or set
) will cause updates to appropriate signals.
How to use it
Import
import { ReactiveMap } from "@solid-primitives/map";
import { ReactiveWeakMap } from "@solid-primitives/map";
Basic usage
The usage is almost the same as the original Javascript structures.
const userPoints = new ReactiveMap<User, number>();
createEffect(() => {
userPoints.get(user1);
userPoints.has(user1);
userPoints.size;
});
userPoints.set(user1, 100);
userPoints.delete(user2);
userPoints.set(user1, { foo: "bar" });
Constructor arguments
ReactiveMap
's and ReactiveWeakMap
's constructor one optional argument that is the initial entries of the map.
const map = new ReactiveMap([
["foo", [1, 2, 3]],
["bar", [3, 4, 5]],
]);
Values are shallowly wrapped
Treat the values of ReactiveMap
and ReactiveMap
as individual signals, to cause updates, they have to be set through the .set()
method, no mutations.
const map = new ReactiveMap<string, { age: number }>();
map.set("John", { age: 34 });
map.get("John").age = 35;
map.set("John", { age: 35 });
Changelog
See CHANGELOG.md