Trigger
Bindings for @solid-primitives/trigger.
Alias types:
type [<Erase>] Track<'T> = 'T -> unit
type [<Erase>] Dirty<'T> = 'T -> unit
type [<Erase>] DirtyAll = unit -> unit
type [<Erase>] TriggerSignal<'T> = Track<'T> * Dirty<'T>
type [<Erase>] TriggerCacheSignal<'T> = Track<'T> * Dirty<'T> * DirtyAll
createTrigger
let createTrigger(): TriggerSignal<unit>
Track the trigger in reactive computations, then fire it when you want.
Example
let track, dirty = createTrigger()
createEffect (
(fun _ -> track ()), // the trigger is now a dependency
(fun () -> JS.console.log "Triggered!")
)
// ...
dirty () // "Triggered!"
createTriggerCache
let createTriggerCache<'T>(): TriggerCacheSignal<'T>
A cache of triggers keyed by 'T, so you can mark specific keys dirty. A key's trigger exists only while a computation tracks it. The binding does not expose upstream's mapConstructor argument, so the cache is always a Map, never a WeakMap.
[<Extension>]
static member track (triggerCache: TriggerCacheSignal<'T>, key: 'T): unit
[<Extension>]
static member dirty (triggerCache: TriggerCacheSignal<'T>, key: 'T): unit
Example
let map = createTriggerCache<int>()
createEffect (
(fun _ -> map.track 1), // adds key 1 to the dependencies
(fun () -> JS.console.log "Triggered!")
)
// ...
map.dirty 1 // "Triggered!"
