Skip to content

RefSpec type

Home > @rimitive/view > RefSpec

Ref spec - a specification/blueprint for a ref that can be instantiated multiple times Extends Service to provide uniform context injection pattern

Signature:

export type RefSpec<TElement> = {
status: typeof STATUS_REF_SPEC;
create<TExt = Record<string, unknown>>(svc?: unknown, extensions?: TExt, parentContext?: ParentContext<unknown>): NodeRef<TElement> & TExt;
};

References: STATUS_REF_SPEC, ParentContext, NodeRef

import { compose } from '@rimitive/core';
import { SignalModule } from '@rimitive/signals/extend';
import { createDOMAdapter } from '@rimitive/view/adapters/dom';
import { createElModule } from '@rimitive/view/el';
import type { RefSpec } from '@rimitive/view/types';
const adapter = createDOMAdapter();
const svc = compose(SignalModule, createElModule(adapter));
const { el, mount } = svc;
// el() returns a RefSpec
const buttonSpec: RefSpec<HTMLButtonElement> = el('button')('Click me');
// RefSpecs can be instantiated multiple times
const button1 = mount(buttonSpec);
const button2 = mount(buttonSpec);