compose() function
Home > @rimitive/core > compose
compose() function
Section titled “compose() function”Compose modules into a unified context.
Resolves the dependency graph automatically - you only need to pass the modules you want, and their dependencies are included transitively.
Returns a use() function that provides access to the composed context: - use() - Returns the context directly - use(callback) - Passes the context to callback and returns its result
Signature:
export declare function compose<TModules extends AnyModule[]>(...modules: TModules): Use<ComposedContext<TModules>>;Parameters
Section titled “Parameters”|
Parameter |
Type |
Description |
|---|---|---|
|
modules |
TModules |
Returns:
Use<ComposedContext<TModules>>
Example 1
Section titled “Example 1”Basic usage
import { compose } from '@rimitive/core';import { SignalModule, ComputedModule, EffectModule } from '@rimitive/signals/extend';
const svc = compose(SignalModule, ComputedModule, EffectModule);const { signal, computed, effect } = svc;
const count = signal(0);const doubled = computed(() => count() * 2);effect(() => console.log(doubled()));Example 2
Section titled “Example 2”With instrumentation
import { compose, createInstrumentation, devtoolsProvider } from '@rimitive/core';import { SignalModule, ComputedModule } from '@rimitive/signals/extend';
const svc = compose(SignalModule, ComputedModule, { instrumentation: createInstrumentation({ providers: [devtoolsProvider()], }),});Example 3
Section titled “Example 3”Behavior pattern
const counter = (svc) => () => { const count = svc.signal(0); return { value: svc.computed(() => count()), increment: () => count(c => c + 1), };};
const useCounter = svc(counter);const myCounter = useCounter();