Skip to content

@gluonjs/core / 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();

Version-matched documentation. Examples are checked against the public package contracts.