From 5f4611d65e40eae3ca6191a15f68d69ea5a1c4cb Mon Sep 17 00:00:00 2001 From: Kirill Rogovoy Date: Tue, 20 Jul 2021 21:24:52 +0300 Subject: WIP --- app_expo/models/root-store/root-store-context.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app_expo/models/root-store/root-store-context.ts (limited to 'app_expo/models/root-store/root-store-context.ts') diff --git a/app_expo/models/root-store/root-store-context.ts b/app_expo/models/root-store/root-store-context.ts new file mode 100644 index 0000000..f01a35c --- /dev/null +++ b/app_expo/models/root-store/root-store-context.ts @@ -0,0 +1,22 @@ +import { createContext, useContext } from 'react' +import { RootStore } from './root-store' + +/** + * Create a context we can use to + * - Provide access to our stores from our root component + * - Consume stores in our screens (or other components, though it's + * preferable to just connect screens) + */ +const RootStoreContext = createContext({} as RootStore) + +/** + * The provider our root component will use to expose the root store + */ +export const RootStoreProvider = RootStoreContext.Provider + +/** + * A hook that screens can use to gain access to our stores, with + * `const { someStore, someOtherStore } = useStores()`, + * or less likely: `const rootStore = useStores()` + */ +export const useStores = () => useContext(RootStoreContext) -- cgit v1.2.3