Store
A class that can be used to represent the entire application store. To create an instance of the store, you can use the constructor of the class.
const store = new Store(initialState: TState, options?: StoreOptions<TState, TUpdater>)
initialState: TState
: A required paremeter to instantiate the Store
object. It represents a store that holds and manages state and provides subscription mechanisms.options?: StoreOptions<TState, TUpdater>
: An optional parameter representing the options of the store. You can use this object to configure additional properties on your store.listeners
: A set of listeners subscribed to the storestate
: The current state of the store.options?
: Options for configuring the storesubscribe
: Subscribes a listener to the store. The method returns a function to unsubscribe the listener.
subscribe = (listener: Listener)
listener
is a callback function that can be passed to subscribe to changes in the store.setState
: Updates the store's state using the provided updater function.
setState = (updater: TUpdater,opts?:{ priority: Priority})
updater: TUpdater
: a function to update the store's state.opts?
: An options object containing the update priority. Priority can be either high
or low
.batch
: Allows you to call setState
multiple times in the callback while only notifying listener
s of changes once per batched execution.
batch = (cb: () => void)
StoreOptions
An interface representing the properties available to configure in Store.
updateFn?
: A function to updates the current store's state.
updateFn?: (previous: TState) => (updater: TUpdater) => TState;
onSubscribe?
: A callback function called when a listener is subscribed to the store. Returns a function to unsubscribe the listener.
onSubscribe?: ( listener: Listener, store: Store<TState, TUpdater>,) => () => void;
onUpdate?
: A callback function called when the store's state is updated.
onUpdate?: (opts: { priority: Priority }) => void;
defaultPriority?
: The default priority to use when no priority is specified.
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.