fn
createEventHook
v0.0.14testeddemoLightweight, non-reactive event hook factory exposing
{ on, off, trigger, clear }. on returns a callable off handle (also
carrying an .off method) and auto-removes the listener on scope dispose.
trigger awaits async listeners and resolves with all their results. SSR-safe
(touches no browser globals) and tree-shakeable.
Examples
ts
const { on, trigger } = createEventHook<string>();
const off = on((msg) => console.log(msg));
await trigger('hello');
off();ts
// Tuple payload for multiple positional arguments
const hook = createEventHook<[number, number]>();
hook.on((x, y) => x + y);
const results = await hook.trigger(2, 3); // [5]ts
// trigger awaits async listeners
const hook = createEventHook<void>();
hook.on(async () => { await save(); });
await hook.trigger(); // resolves after save() completesDemo
Loading demo…
Signature
ts
export function createEventHook<T = unknown>(
options: CreateEventHookOptions ={ ... }Type Parameters
T= unknownParameters
| Parameter | Type | Description |
|---|---|---|
options? | CreateEventHookOptions | Options |
Returns
CreateEventHookReturn<T>The event hook controls| Property | Type | Description |
|---|---|---|
on | EventHookOn<T> | Register a listener. Returns a handle that removes the listener when
called (or via its .off method). The listener is also removed
automatically when the surrounding effect scope is disposed. |
off | EventHookOff<T> | Remove a previously registered listener. |
trigger | EventHookTrigger<T> | Invoke every registered listener with the given payload and resolve once all of them (including async listeners) have settled. |
clear | () => void | Remove all listeners. |