From aae241d907a91ac17550b833375824cc52987eff Mon Sep 17 00:00:00 2001 From: "Dev.Casamia" Date: Mon, 2 Jun 2025 05:46:05 +0900 Subject: [PATCH] feat: Seperate useProvideStore from Provide Wrapper --- .../create-store-context.tsx | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/packages/store/src/create-store-context/create-store-context.tsx b/packages/store/src/create-store-context/create-store-context.tsx index e5c44f0..42305f7 100644 --- a/packages/store/src/create-store-context/create-store-context.tsx +++ b/packages/store/src/create-store-context/create-store-context.tsx @@ -32,31 +32,37 @@ export function createStoreContext | AnyFn>( const Context = React.createContext(null); - const Provider = ( - props: { - children: React.ReactNode; - } & StoreParams - ) => { - const { children, ...restProps } = props; - const storeInstance = React.useRef( - createInstance(restProps as StoreParams) + const useProvideStore = (props: StoreParams) => { + const storeInstanceRef = React.useRef( + createInstance(props) ); - + React.useEffect(() => { - const instance = storeInstance.current; + const instance = storeInstanceRef.current; if (!instance) return; - + const effectMethods = createEffectMethods(instance as any); - + effectMethods.subscribeToEffects(); - + return () => { effectMethods.unsubscribeFromEffects(); }; }, []); + + return storeInstanceRef.current; + }; + + const Provider = ( + props: { + children: React.ReactNode; + } & StoreParams + ) => { + const { children, ...restProps } = props; + const storeInstance = useProvideStore(restProps as StoreParams); return ( - + {children} ); @@ -91,6 +97,7 @@ export function createStoreContext | AnyFn>( return { Provider, + useProvideStore, useStore, withProvider, Context,