@gluonjs/store


@gluonjs/store / packages/store/src / defineStore

Function: defineStore()

Call Signature

defineStore<Id, State, Getters, Actions>(id, state, options): StoreDefinition<Id, State, Getters, Actions>

Type Parameters

Id

Id extends string

State

State extends StateTree

Getters

Getters extends StoreGetterTree<State> = Record<never, never>

Actions

Actions extends StoreActionTree = Record<never, never>

Parameters

id

Id

state

() => State

options

Omit<DefineStoreOptions<Id, State, Getters, Actions>, "id" | "state">

Returns

StoreDefinition<Id, State, Getters, Actions>

Call Signature

defineStore<Id, State, Getters, Actions>(options): StoreDefinition<Id, State, Getters, Actions>

Type Parameters

Id

Id extends string

State

State extends StateTree

Getters

Getters extends StoreGetterTree<State> = Record<never, never>

Actions

Actions extends StoreActionTree = Record<never, never>

Parameters

options

DefineStoreOptions<Id, State, Getters, Actions>

Returns

StoreDefinition<Id, State, Getters, Actions>

Example

Define a typed counter store, attach it to an application-owned manager, update its state, and release it:

ts
import { createStoreManager, defineStore } from '@gluonjs/store';

const counter = defineStore({
  id: 'counter',
  state: () => ({ count: 0 }),
});

const manager = createStoreManager();
const store = counter.use(manager);
store.$patch({ count: store.count + 1 });
console.log(store.count); // 1
manager.dispose();