import { createContext, Context, useContext } from 'react'; export interface IUseStore { (key: string, defaultValue: T): [T, (value: T) => any, () => any]; } export interface IStoreContext { useStore: IUseStore; } export const defaultContext: IStoreContext = { useStore: (key, defaultValue) => [defaultValue, value => undefined, () => undefined], }; export const StoreContext = createContext(defaultContext); export interface ISetKeyValue {} export function useStore( key: string, defaultValue: T, context: Context = StoreContext, ): [T, (value: T) => any, () => any] { const { useStore } = useContext(context); return useStore(key, defaultValue); }