Skip to content

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!"
Edit this page