UNPKG

@jingoz/zlight

Version:

一个轻量级的仿 zustand 的 React 状态管理库

19 lines (13 loc) 617 B
import { useSyncExternalStore } from 'react' import { TReadonlyStoreApi, TState } from './types' const returnSelf = (args: any) => args export function useStore<S extends TReadonlyStoreApi<unknown>>(api: S): TState<S> export function useStore<S extends TReadonlyStoreApi<unknown>, P>(api: S, selector: (state: TState<S>) => P): P export function useStore<S, P>(api: TReadonlyStoreApi<S>, selector: (state: S) => P = returnSelf): P { const partial = useSyncExternalStore( api.subscribe, () => selector(api.getState()), () => selector(api.getInitialState()), ) return partial }