@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:
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();