mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
import { createContext, useContext } from "react";
|
|
import { Store } from "../store";
|
|
|
|
let store;
|
|
export const StoreContext = createContext();
|
|
|
|
export function useStore() {
|
|
const context = useContext(StoreContext);
|
|
if (context === undefined) {
|
|
throw new Error("useStore must be used within StoreProvider");
|
|
}
|
|
|
|
return context;
|
|
}
|
|
|
|
function initializeStore(initialData = null) {
|
|
const _store = store ?? new Store();
|
|
|
|
// If your page has Next.js data fetching methods that use a Mobx store, it will
|
|
// get hydrated here, check `pages/ssg.js` and `pages/ssr.js` for more details
|
|
if (initialData) {
|
|
_store.hydrate(initialData);
|
|
}
|
|
// For SSG and SSR always create a new store
|
|
if (typeof window === "undefined") return _store;
|
|
// Create the store once in the client
|
|
if (!store) store = _store;
|
|
|
|
return _store;
|
|
}
|
|
|
|
export function StoreProvider({ children, initialState: initialData }) {
|
|
const store = initializeStore(initialData);
|
|
|
|
return (
|
|
<StoreContext.Provider value={store}>{children}</StoreContext.Provider>
|
|
);
|
|
}
|