UNPKG

zustand

Version:

🐻 Bear necessities for state management in React

23 lines (20 loc) 739 B
import React from 'react'; import { createStore } from 'zustand/vanilla'; const identity = (arg) => arg; function useStore(api, selector = identity) { const slice = React.useSyncExternalStore( api.subscribe, React.useCallback(() => selector(api.getState()), [api, selector]), React.useCallback(() => selector(api.getInitialState()), [api, selector]) ); React.useDebugValue(slice); return slice; } const createImpl = (createState) => { const api = createStore(createState); const useBoundStore = (selector) => useStore(api, selector); Object.assign(useBoundStore, api); return useBoundStore; }; const create = ((createState) => createState ? createImpl(createState) : createImpl); export { create, useStore };