zustand-di
Version:
dependency injection for zustand with react context
32 lines • 847 B
JavaScript
// src/index.ts
import {
createElement,
createContext as reactCreateContext,
useContext,
useRef
} from "react";
import { useStoreWithEqualityFn } from "zustand/traditional";
var createContext = () => {
const StoreContext = reactCreateContext(void 0);
const Provider = ({ createStore, ...rest }) => {
const storeRef = useRef();
return createElement(StoreContext.Provider, {
value: storeRef.current ||= createStore(),
...rest
});
};
const useStore = (selector, equalityFn) => {
const store = useContext(StoreContext);
if (store) {
return useStoreWithEqualityFn(store, selector, equalityFn);
}
throw new Error(
"Seems like you have not used zustand provider as an ancestor."
);
};
return [Provider, useStore];
};
export {
createContext
};
//# sourceMappingURL=index.js.map