@gluonjs/store / packages/store/src / DefineStoreOptions
Interface: DefineStoreOptions<Id, State, Getters, Actions>
Type Parameters
Id
Id extends string
State
State extends StateTree
Getters
Getters extends StoreGetterTree<State>
Actions
Actions extends StoreActionTree
Properties
actions?
readonlyoptionalactions?: (store) =>Actions
Parameters
store
State & Readonly<Getters>
Returns
Actions
getters?
readonlyoptionalgetters?: (state) =>Getters
Parameters
state
DeepReadonly<State>
Returns
Getters
id
readonlyid:Id
persist?
readonlyoptionalpersist?:boolean|PersistOptions<State>
state
readonlystate: () =>State
Returns
State
Example
Describe a Store's stable ID and state factory before turning the options into a reusable definition:
import {
createStoreManager,
defineStore,
type DefineStoreOptions,
type StoreDefinition,
type StorePluginContext,
} from '@gluonjs/store';
type CounterState = { count: number };
type Empty = Record<never, never>;
const options = { id: 'counter', state: (): CounterState => ({ count: 0 }) } satisfies DefineStoreOptions<'counter', CounterState, Empty, Empty>;
const counter: StoreDefinition<'counter', CounterState, Empty, Empty> =
defineStore(options);
const manager = createStoreManager({
plugins: [(context: StorePluginContext) => {
console.log(`Mounted ${context.definition.id}`);
}],
});
const store = counter.use(manager);
store.$patch({ count: 1 });
manager.dispose();