Мне нужно запускать некоторые функции (например, Office UI Fabric React initializeIcons()
) и вызов AXIOS (например, получить зарегистрированного пользователя с помощью Context API) только при первом обращении к сайту.затем сохраните полученные значения в контексте React и сделайте его доступным для всего приложения.
Гэтсби оборачивает содержимое моих страниц в макет , например:
const IndexPage = () =>
<Layout>
Body of Index Page...
</Layout>
const AnotherPage = () =>
<Layout>
Body of Another Page...
</Layout>
с Макет выглядит так:
const Layout = ({ children }) =>
<>
<Header />
<main>{children}</main>
<Footer />
</>
Я знаю, где я могу НЕ поставить свой контекст:
по страницам (или оно будет выполняться при каждом обращении к странице, а также недоступно для других страниц):
const IndexPage = () =>
<MyContextProvider>
<Layout>
Context Available here
</Layout>
</MyContextProvider>
const AnotherPage = () =>
<Layout>
Context NOT available here
</Layout>
в макете (или он будет выполняться каждый раз):
const Layout = ({ children }) =>
<MyContextProvider>
<Header />
<main>{children}</main>
<Footer />
</MyContextProvider>
Полагаю, мне нужен корневой <app>
объект для окружениямой провайдер контекста, но как можно добиться этого с помощью Gatsby?
Где мне разместить провайдера контекста?