diff options
author | Thomas F. K. Jorna <[email protected]> | 2021-07-14 15:10:31 +0200 |
---|---|---|
committer | Thomas F. K. Jorna <[email protected]> | 2021-07-14 15:10:31 +0200 |
commit | e5021187e96b78b53203bd95d08d6818aea47d17 (patch) | |
tree | 37ec45d00eb963db53cd4bb4f04a770414b351cc /app/models/root-store/root-store-context.ts |
New Ignite 7.0.6 app
Diffstat (limited to 'app/models/root-store/root-store-context.ts')
-rw-r--r-- | app/models/root-store/root-store-context.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/models/root-store/root-store-context.ts b/app/models/root-store/root-store-context.ts new file mode 100644 index 0000000..537e51c --- /dev/null +++ b/app/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<RootStore>({} 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) |