substate
Version:
Pub/Sub pattern with State Management
32 lines • 1.48 kB
TypeScript
import type { TState } from '../../core/Substate/interfaces';
import type { ISubstate } from '../../core/Substate/Substate.interface';
import type { StateSelector, StringSelector } from './types';
type State = TState;
/**
* React hook for subscribing to Substate store changes with optional selector
*
* @param store - The Substate store instance
* @param selector - Optional selector function or string for nested property access
* @returns Selected state value or entire state if no selector provided
*
* @example
* // Define your state type
* interface AppState {
* count: number;
* user: { name: string; age: number };
* }
*
* // Get entire state
* const state = useSubstate(store); // Returns AppState
*
* // Get specific property with function selector
* const count = useSubstate(store, state => state.count); // Returns number
*
* // Get nested property with string selector
* const userName = useSubstate(store, 'user.name'); // Returns unknown
*/
declare function useSubstate<TSubstateState extends State = State>(store: ISubstate<TSubstateState>): TSubstateState;
declare function useSubstate<TSubstateState extends State = State, TReturn = unknown>(store: ISubstate<TSubstateState>, selector: StateSelector<TSubstateState, TReturn>): TReturn;
declare function useSubstate<TSubstateState extends State = State>(store: ISubstate<TSubstateState>, selector: StringSelector): unknown;
export { useSubstate };
//# sourceMappingURL=useSubstate.d.ts.map