AtomRef.ts
AtomRef.ts overview
Section titled “AtomRef.ts overview”Mutable reactive references for local, in-memory state.
AtomRef provides small observable state cells that can be read, updated,
mapped, and subscribed to without going through an AtomRegistry. Mutable
refs can also create refs for nested properties. The module also provides a
collection helper that stores item refs and notifies subscribers when items are
inserted, removed, or changed.
Since v4.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”constructors
Section titled “constructors”collection
Section titled “collection”Creates a reactive collection from an iterable of initial item values.
Details
Each item is wrapped in an AtomRef, and changes to item refs notify the
collection subscribers.
Signature
declare const collection: <A>(items: Iterable<A>) => Collection<A>Since v4.0.0
Creates a mutable reactive reference initialized with the supplied value.
Signature
declare const make: <A>(value: A) => AtomRef<A>Since v4.0.0
models
Section titled “models”AtomRef (interface)
Section titled “AtomRef (interface)”A mutable reactive reference.
Details
It supports replacing the whole value, updating it from the current value, and creating mutable references to nested properties.
Signature
export interface AtomRef<A> extends ReadonlyRef<A> { readonly prop: <K extends keyof A>(prop: K) => AtomRef<A[K]> readonly set: (value: A) => AtomRef<A> readonly update: (f: (value: A) => A) => AtomRef<A>}Since v4.0.0
Collection (interface)
Section titled “Collection (interface)”A reactive collection of mutable item references.
Details
The collection can push, insert, and remove item refs, and toArray returns the
current raw item values.
Signature
export interface Collection<A> extends ReadonlyRef<ReadonlyArray<AtomRef<A>>> { readonly push: (item: A) => Collection<A> readonly insertAt: (index: number, item: A) => Collection<A> readonly remove: (ref: AtomRef<A>) => Collection<A> readonly toArray: () => Array<A>}Since v4.0.0
ReadonlyRef (interface)
Section titled “ReadonlyRef (interface)”A read-only reactive reference.
Details
It exposes a stable key, the current value, subscriptions to value changes, and
map for creating derived read-only references. Equality and hashing are based
on the current value.
Signature
export interface ReadonlyRef<A> extends Equal.Equal { readonly [TypeId]: TypeId readonly key: string readonly value: A readonly subscribe: (f: (a: A) => void) => () => void readonly map: <B>(f: (a: A) => B) => ReadonlyRef<B>}Since v4.0.0
type IDs
Section titled “type IDs”TypeId
Section titled “TypeId”The runtime type id used to identify AtomRef values.
Signature
declare const TypeId: "~effect/reactivity/AtomRef"Since v4.0.0
TypeId (type alias)
Section titled “TypeId (type alias)”The literal type used to identify AtomRef values.
Signature
type TypeId = "~effect/reactivity/AtomRef"Since v4.0.0